UDP recvfrom 错误10022

weixin_40356459 2017-11-14 08:00:01

// P2P.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <thread>
#include <WinSock2.h>

#pragma comment(lib, "WS2_32")

using namespace std;

WSADATA wsaData;
SOCKET sock;
sockaddr_in myAddr, toAddr, recvAddr;
int addrLen, recvLen;
char sendBuff[100], recvBuff[100];

sockaddr_in setAddr(int af, int port, char* ip)
{
sockaddr_in addr;
addr.sin_family = af;
addr.sin_port = htons(port);
addr.sin_addr.S_un.S_addr = inet_addr(ip);
return addr;
}

sockaddr_in setAddr(int af, int port, ULONG ip)
{
sockaddr_in addr;
addr.sin_family = af;
addr.sin_port = htons(port);
addr.sin_addr.S_un.S_addr = htonl(ip);
return addr;
}

void Send()
{
while (true)
{
cout << "message: ";
cin >> sendBuff;
if (sendBuff != "bye")
{
sendto(sock, sendBuff, sizeof(sendBuff), 0, (sockaddr*)&toAddr, addrLen);
}
else
return;
}
}

void Recv()
{
//while (true)
//{
memset(recvBuff, 0, 100 * sizeof(char));
int rt = recvfrom(sock, recvBuff, sizeof(recvBuff), 0, (sockaddr*)&recvAddr, &recvLen);
if (rt != -1)
{
cout << recvBuff << endl;
if (recvBuff == "bye")
return;
}
else
cout << WSAGetLastError() << endl;
//}
}

int main()
{
WSAStartup(MAKEWORD(2, 2), &wsaData);
sock = socket(AF_INET, SOCK_DGRAM, 0);
addrLen = recvLen = sizeof(sockaddr_in);

myAddr = setAddr(AF_INET, 4567, INADDR_ANY); //设置本机地址

char IP[20];
cout << "IP: ";
cin >> IP;
toAddr = setAddr(AF_INET, 4567, IP); //设置对方地址

bind(sock, (sockaddr*)&myAddr, addrLen); //绑定套接字和本机地址

thread t1(Recv);
t1.detach();
thread t2(Send);
t2.join();
}
...全文
244 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40356459 2017-11-14
  • 打赏
  • 举报
回复
recvfrom函数下面一直报10022

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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