繁体   English   中英

为什么套接字(AF_INET,SOCK_DGRAM,IPPROTO_UDP)失败?

Why will socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ) fail?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

它可能与它无关,但是我正在努力将旧的MFC应用程序转换为Unicode。 我想我可能会尝试使用Unicode字符集制作另一个全新的MFC应用程序,目的只是想让我头脑中的事情变得清晰起来。 除此之外,我还需要一个小工具来与使用UDP的PLC进行通讯,因此我认为我会将其用作测试用例。

因此,新的MFC Unicode应用程序运行良好...直到我从旧应用程序中剪切并粘贴以下内容:

if ( ( mySocket = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ) ) == INVALID_SOCKET )
{
    throw std::string( "Failed to open UDP socket" );
}

当将旧应用程序部署在使用Visual Studio 2005或2010编译的WinXP,Win7(32位或64位)或Win8上时,该行从未引起任何问题。

但是,我进行Unicode转换的动机是Visual Studio2013。我将其作为Win32目标进行编译,并且编译良好,但是当我在Win7或Win8(都是64位;没有尝试其他方法)上运行新应用时,此时总是会引发错误。 为什么?

1 个回复

您显示的代码本身很好,但是您没有指定在socket()失败时WSAGetLastError()报告的错误代码:

返回值
如果没有错误发生,则套接字返回引用新套接字的描述符。 否则,将返回INVALID_SOCKET的值,并且可以通过调用WSAGetLastError来检索特定的错误代码

在这种情况下最可能的错误代码是WSANOTINITIALISED (10093):

尚未执行成功的WSAStartup。
应用程序未调用WSAStartup或WSAStartup失败。 应用程序可能正在访问当前活动任务不拥有的套接字(即,尝试在任务之间共享套接字),或者WSACleanup被调用了太多次。

由于您正在启动一个新项目,因此您可能只是在调用socket()之前忘记了调用WSAStartup()来初始化Winsock库。

2 套接字AF_INET和SOCK_STREAM的问题

我想在我的Android应用程序中运行Android屏幕截图库的JNI代码 。 根据其文档 ,您只需要运行.bat / .sh文件,即可将本机代码复制到设备中,执行该文件并启动该服务。 哪个有效。 但是我正在创建一个应用程序,它将本机代码从其资产文件夹复制到设备,然后启动该服务。 ...

3 如何使用unix套接字(AF_UNIX,SOCK_DGRAM)模拟PUB / SUB?

我正在努力使这种简单的交流有效。 我用不到5分钟的时间用zmq做到了。 使用UNIX套接字执行此操作很痛苦(显然是因为我缺乏信心)。 这是服务器: 这是客户: 我做错了什么? 目前,客户端不打印任何内容。 EDIT1:将服务器write(,,rc)中的错 ...

4 我如何找到由套接字SOCK_DGRAM选项创建的ip / udp标头

谁能告诉我如何通过套接字类型SOCK_DGARM选项创建的ip/udp标头。在我的VOIP应用程序中,同时此选项设置sendto()函数仅发送RTP数据,而不发送IP/UDP/RTP标头和数据的整个缓冲区。为什么我要找到在哪里创建IP/UDP标头的人,所以谁能告诉我在哪一点找到它。 在这 ...

2015-01-12 06:27:22 2 501   c/ voip
5 Unix套接字,SOCK_SEQPACKET与SOCK_DGRAM

似乎至少有3种不同的本地/ unix套接字类型( AF_UNIX ), SOCK_STREAM , SOCK_DGRAM和SOCK_SEQPACKET 。 虽然我知道SOCK_STREAM为您提供双向字节流,如TCP或双向管道,而另外两个为您提供了一个消息/数据包API, SOCK_DGR ...

2012-04-11 10:22:42 5 32992   c/ unix
6 套接字没有属性AF_INET?

我正在尝试从我的一本教科书中进行套接字编程作业..UDP 连接.. UDP服务器.py UDP客户端.py 为什么我在运行客户端时会收到此错误? 我查看了这个论坛,有人遇到了类似的问题,但他们的问题是他们导入了自己的 socket.py 文件。 我没有,我使用的是标准的 Pytho ...

7 Linux上奇怪的AF_INET和SOCK_STREAM套接字行为

我在两个不同的Linux计算机(客户端和服务器)上运行了两个简单的进程,它们使用AF_INET|SOCK_STREAM套接字相互通信,客户端向服务器发送短命令字符串,然后服务器以非常长的字符串作为响应(大约78KB),当客户端收到所有这些78KB时,它退出,仅此而已,这是奇怪的事情: 客户 ...

8 如何从套接字(AF_INET6,SOCK_RAW,IPPROTO_ICMPv6)的原始字节串创建ICMPv6 scapy对象?

我想在使用Python的Python程序中检查/分析ICMPv6路由器通告(RA),在该程序中,我得到(不是这样)原始数据包数据,如下所示: 当收到ICMPv6数据包时,数据包p将仅包含(!)ICMPv6部分本身,但不包含任何其他外部元素,因此没有IPv6头,以太网头,... 如何 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM