草庐IT

sockaddr

全部标签

c - Go 语言使用 C 的内部结构

我希望能够在Go中将一个主机地址(让我们使用“www.google.be”)转换为sockaddr结构,然后在C代码中使用它。使用http://github.com/jbenet/go-sockaddr将主机地址转换为sockaddr_any结构并不难模块。我的代码有效,如下所示:ipAddr,_:=net.ResolveIPAddr("ip","www.google.be")sockAddr:=sockaddrnet.IPAddrToSockaddr(ipAddr)rawSockaddr,socklen,_:=sockaddr.SockaddrToAny(sockAddr)cStru

c - 在函数中传递指向 SOCKADDR_IN 和 SOCKET 的指针

我有一个函数createServerSocket()。多个线程可以访问此函数以创建它们的套接字。我希望每个线程向createrServerSocket()函数传递三个参数,一个socketIdentifier、*sockaddr_in*和特定的端口号,所以每个线程都有一个唯一的套接字。为此,我将socketIdentifier、*sockaddr_in*和特定的端口号作为指针传递给createrServerSocket()函数,以便创建的socketIdentifier和套接字必须可以在线程内访问.下面是我的代码片段:VOIDcreateServerSocket(SOCKADDR_IN

c - getaddrinfo 何时返回列表中的多个 sockaddr 结构?

我正在处理我找到的一些代码,我试图理解其中的for循环逻辑。似乎没有使用for循环,它总是会中断。所以我不明白从getaddrinfo()返回什么样的信息会导致它再次循环并检查某些东西?问题:基本上,这个for循环试图完成什么?在我看来,它只是检查列表是否不为NULL,因为从来没有发生循环。tcp_ctx*tcp_new_ctx(INTfamily,CHAR*host,CHAR*port){structaddrinfo*list=NULL;structaddrinfo*e=NULL;structaddrinfohints;tcp_ctx*c=NULL;WSADATAwsa;INTon=

c++ - 如何在 Windows : 中用 C++ 比较两个端点地址

boolcheckSockaddr(sockaddr_ina,sockaddr_inb)检查他们两个是否有相同的地址信息。 最佳答案 boolcheckSockaddr(sockaddr_inconst&a,sockaddr_inconst&b){返回a.sin_addr.S_un.S_addr==b.sin_addr.S_un.S_addr; 关于c++-如何在Windows:中用C++比较两个端点地址,我们在StackOverflow上找到一个类似的问题:

c++ - 错误 C2011 : 'sockaddr' : 'struct' type redefinition. 请参阅 'sockaddr' 的声明

这个问题在这里已经有了答案:C++RedefinitionHeaderFiles(winsock2.h)(15个答案)关闭6年前。我使用VisualStudio2012并尝试获取静态库UDT开始工作。不幸的是,我无法编译将UDT库链接到自身的项目,我在WindowsSDKheader中收到159个关于类型或宏重新定义的奇怪错误。c:\programfiles\windowskits\8.0\include\shared\ws2def.h(96):warningC4005:'AF_IPX':macroredefinition2>c:\programfiles\windowskits\8.

linux - sockaddr_in 和 sockaddr_in6 还在使用 sin_len 和 sin6_len 吗?

所以,标题基本上说明了一切。我一直在将我的unix套接字C代码移植到Windows,显然这些结构在Windows中没有sin_len或sin6_len。我在各处使用sockaddr_storage、sockaddr_in和sockaddr_in6之间的联合,并且只是根据ss_family使用正确的成员。套接字库可以根据系列推导出大小是有道理的,因此长度字段确实是多余的。如果我注释掉设置长度字段的代码,在OSX和Linux上一切仍然有效,但这可能只是一种错觉,所以我决定在这里问一下。该变量是否已以某种方式弃用?我可以安全地停止使用它,并依靠套接字实现来使用family变量吗?

c++ - 将 sockaddr_storage 复制到另一个 sockaddr_storage 更改地址

嘿...在最近的一个问题中(没有人对最后的更改使用react)我在分配由recvfrom填充的sockaddr结构时遇到问题。正如我被告知的那样,我确实将我的sockaddr更改为sockaddr_storage并在最后一刻转换它以确保有足够的空间用于地址...但是的问题sockaddr_storages1,s2;/*recvaddressintos1*/s2=s1;或memcpy(&s2,&s1,sizeof(sockaddr_storage));不工作...有人有解决方案来复制sockaddr_storage或至少复制地址以将其保存在结构中并稍后获取原始值吗?...谢谢。编辑:so

c++ - 使用 getsockname 函数时出现 WSAEFAULT 错误

我在使用getsockname函数时遇到问题。我有这段代码:structsockaddrsa;intsa_len;sa_len=sizeof(sa);if(getsockname(socketfd,&sa,&sa_len)!=SOCKET_ERROR){///}else{interror=WSAGetLastError();//errorhereWSAEFAULTalways}如您所见,我在使用getsockname函数时总是出错。错误-WSAEFAULT。但为什么?结构和结构尺寸都对,为什么会这样?WSAEFAULT描述:Thenameorthenamelenparameterisn

c++ - 使用 C++ 和 winsock 的蓝牙

我发现很难在C++中获得有关蓝牙通信的信息。具体来说,我想避免使用任何第三方库,我只想连接到已经与我的计算机配对的设备。该设备已经输入了密码,并且在我的设备和打印机下的“显示蓝牙设备”中可用。我正在使用Windows7和VisualStudio2013Professional进行C++开发。我有一些示例代码(来自此处http://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancedotherprotocol4k.html),它在我的蓝牙radio上显示信息,然后显示设备信息,它似乎运行良好

c++ - 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

我正在编写基于this的多播客户端/服务器应用程序和this;效果很好。但是,当计算机中事件网络接口(interface)的数量发生变化时,我还需要做一些事情,比如thispage的示例部分中的程序。我想我应该使用boost::asio::local中的工具,但我不确定我应该使用boost::asio::local::datagram_protocol还是boost::asio::local::stream_protocol或者...如何做尽可能相似的事情的例子会很有帮助。谢谢。 最佳答案 正如您所注意到的,必须编写一些额外的代码才