问题标签 [sockaddr-in]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2496 浏览

c++ - Sockaddr union 和 getaddrinfo()

我正在编写一个从命令行提供地址的 UDP 套接字程序。

为了使发送和写入更容易,我使用 getaddrinfo 将地址转换为 sockaddr 结构:sockaddr_in 或 sockaddr_in6。现在我明白我应该使用 sockaddrs 的联合:

据我了解,它们不能成为避免隐藏严格别名问题的指针。我无法将 getaddrinfo 的 addrinfo 中的信息无缝放入此 address_t 中:

另外,复制内存:

也会导致段错误。

我应该怎么做?我尝试了十几种不同的方法,但我就是想不通。如何将 addrinfo 中的地址放入此联合?我使用 sockaddr_storage 还是 sockaddr_ins?

编辑:为清晰起见和其他代码信息进行编辑。

0 投票
1 回答
88 浏览

c - 特定 sockaddr_in 变量名的意外编译错误

作为接收struct ifreq *ifr参数的函数的一部分,如果我声明struct sockaddr_in name;,程序编译,但如果我命名变量struct sockaddr_in ifr_addr;,它会失败并出现以下错误:

ifreq结构声明如下。我知道该结构有一个与有问题的变量同名的字段。这在 C 中是怎么出现的问题?

http://man7.org/linux/man-pages/man7/netdevice.7.html

0 投票
0 回答
46 浏览

c - 为什么 sockaddr_in 和 sockaddr 都不兼容?

我尝试在 *ai(struct addrinfo) 中存储 ipv4 地址

所以,我需要验证我是否被正确分配。我使用这段代码:

但是,ipAddress 和 ai->ai_addr 不匹配!!如果您知道如何分配这些结构,请帮助我。谢谢。

0 投票
2 回答
53 浏览

c - 似乎无法将客户地址保存到 sourceMsgs[j]

标题说明了一切,这可能是一件简单的事情,但我对编程很陌生,因此这个愚蠢的问题..

我有:

查看保存在 sourceMsgs[j] 中的 IP 地址是否正确,所以我假设问题出在:

如果帖子非常不完整,我深表歉意,但这是我的第一篇。提前感谢您的帮助

编辑:

似乎问题确实在于传递结构的长度(WSAError 10014)。现在的代码是这样的:

我不太确定该怎么做,但可能有不同的方法:

因为我认为我这样做的方式是搞砸了。

0 投票
1 回答
90 浏览

c - 如何为 C 中的套接字提供自定义 IP?

如何为我的程序提供自定义 IP,我已经构建了一个聊天应用程序,而不是 whatsapp,基于 jus cui 的简单聊天应用程序,因为我是初学者,我使用了 inet_addr() 函数,但它说不能分配ip,它只允许本地 IP(127.0.0.1 到 127.0.0.254),你能告诉我,我该怎么办。请…。这是我的代码:-

这是有问题的代码:-

如果上面的代码没有帮助,这是我的链接,也许你会在那里找到一些有趣的东西,请给我一个解决方案,我真的需要帮助......

https://github.com/BossySmaxx/C-HatAPP.git

0 投票
0 回答
71 浏览

ip-address - 如何在 Windows 中将 IPv4 标头中的协议字段设置为 41?

背景

对于我的 Windows 项目,我创建了 RFC7217 ip 全球单播地址。使用Winsock2和微软的IpHelper函数,这些地址被输入到 PC 的本地表中,然后绑定最终成为监听套接字。我可以从另一台 PC 连接到这些监听端点。

问题

然而,ISP 不能很好地完成 IPv6,如果有的话。使用带有 /48 前缀的免费隧道路由器服务进入Hurricane Electric (阅读:大量可能的 IPv6 地址)。但是我必须以编程方式将我的地址端点放入他们的隧道中。

问题

这让我想到了我的问题。我可以看到我的项目可能的解决方案是编写RFC4213中描述的封装和解封装函数,称为6in4。但是,我的问题是,我还没有想出如何在我的SOCKADDR_IN结构中获取完整的 6in4 数据报,以便将其转换为侦听或连接套接字。我没有看到诸如协议和有效负载长度之类的标头字段,必须为具有 Ipv6 内容的 Ipv4 数据报设置这些字段才能工作。也许还有另一组 iphelpers 甚至更原始的函数可以让我设置标题字段?如果是这样,我还没有找到它们。

编辑1

适用于 Windows 的 Hurricane Electric 隧道的典型配置语句:

0 投票
1 回答
182 浏览

c - UDP套接字的端口号

我的操作系统是 Ubuntu 20.x 。我有两个程序: server.c侦听INADDR_ANY端口2052并在同一端口client.c本地发送 UDP 数据包。INADDR_LOOPBACK

程序运行良好,接收到的数据和 IP 地址与发送的匹配;但是端口号不匹配。我可以看到netstat正在server.c侦听正确的端口(2052)并将端口号转换为本地字节序,所以我不知道我做错了什么。

server.c

client.c

我的目标是在侦听(服务器)端获得正确的端口号。谢谢你的帮助 !

0 投票
2 回答
97 浏览

c++ - 删除并投射。将删除免费的正确数量的字节吗?

将删除免费的字节数吗?