执行时接收数据失败 recv failed with error 5013 求解

qq_42838639 2018-07-30 10:48:00
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main(void)
{
WSADATA wsaData;
SOCKET ListeningSocket; //定义服务端的Socket,服务端Socket用于监听
SOCKET NewConnection; //定义客户端的Socket,客户端Socket用于连接
SOCKADDR_IN ServerAddr; //准备服务端的地址
SOCKADDR_IN ClientAddr; //客户端地址
int ClientAddrLen; //客户端地址的长度
int Ret; //用于检查是否成功所用的参数
int Port = 5150; //设置端口,一台计算机大约有六万多个端口,小的易用,设置时数字尽可能大
char DataBuffer[1024]; //定义一个缓存,缓存接受来的数据
//初始化windows Socket并检测是否成功
if((Ret = WSAStartup(MAKEWORD(2,2),&wsaData)) !=0 )
{
printf("WSAStartup failed with error %d\n",Ret);
return;
}

//创建一个Socket并检测是否创建成功
if((ListeningSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == INVALID_SOCKET)
{
printf("socket failed with error %d\n",WSAGetLastError());
WSACleanup();
return;
}

//绑定Socket和服务端的地址绑定
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port); //将本机字节转换为网络字节
ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if(bind(ListeningSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr)) == SOCKET_ERROR)
{
printf("bind failed with error %d\n",WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}
//监听
if(listen(ListeningSocket,5) == SOCKET_ERROR)
{
printf("listen failed with error %d\n",WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}
printf("We are waiting a connection on port %d\n",Port);
printf("Listen(正在监听)...\n");

//接受客户端的连接
ClientAddrLen = sizeof(SOCKADDR);
if(NewConnection = accept(ListeningSocket,(SOCKADDR*)&ClientAddr,&ClientAddrLen) == INVALID_SOCKET)
{
printf("accept failed with error %d\n",WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}

printf("We are successfully got a connection from %s:%d\n",inet_ntoa(ClientAddr.sin_addr),ntohs(ClientAddr.sin_port));

closesocket(ListeningSocket);
printf("We are waiting to receive data\n");

//接收客户端发来的数据

if((Ret = recv(NewConnection,DataBuffer,strlen(DataBuffer),0)) == SOCKET_ERROR)
{
printf("recv failed with error %d\n",WSAGetLastError());
closesocket(NewConnection);
WSACleanup();
return;
}

printf("We successfully received %d bytes.\n",Ret);
DataBuffer[Ret] = '\0';
printf("We are now going to close the client connetion.\n");
closesocket(NewConnection);
WSACleanup();
system("pause");
...全文
249 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,315

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用专区,欢迎大家讨论硬件相关内容 宝藏!数字IC精品文章收录(CSDN近500篇) http://t.csdn.cn/QbivO
社区管理员
  • 硬件使用社区
  • 张江打工人
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧