基于UDP,创建套接字后,bind绑定无效,但是程序往下运行

// 计网--服务端.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include using namespace std;#include<WinSock2.h>#pragma comment(lib,"Ws2_32.lib")//链接winSock导入库int main(){ //初始化套接字资源 WSADATA wsaDATA; WORD w = MAKEWORD(2, 2); int err; err = WSAStartup(w, &wsaDATA); if (err != 0) { cout << "初始化错误" << endl; } char recvBuf[100]="";//接收数据 char sendBuf[100]="";//发送数据 //加载WinSock动态链接库:WinSock库函数是以动态链接库的形式存在,在调用其函数时必须已经加载winsock动态链接库 //返回值是整数,若返回值为0则调用成功 int WSAStartup(WORD wVersionRequested, LPWSADATA ipWSAData); SOCKET client = socket(AF_INET, SOCK_DGRAM, 0);//创建套接字 SOCKADDR_IN* ADD1=new SOCKADDR_IN; SOCKADDR_IN* ADD2 = new SOCKADDR_IN; int len = sizeof(ADD1);//用于返回接收数据地址结构的长度 //输入服务端端地址ADD1 ADD1->sin_family = AF_INET; ADD1->sin_port = htons(5000); ADD1->sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//INADDR_ANY; bind(client, (SOCKADDR*)ADD1, sizeof(ADD1));//绑定地址 int ret= bind(client, (SOCKADDR*)&ADD1, sizeof(ADD1)); if ( ret==-1) // 绑定套接字到指定地址和端口 { cout << "bind err" << endl; // 如果绑定失败,则打印错误信息并退出程序 return -1; } cout << "服务端开启成功" << endl; while (1) { recvfrom(client, recvBuf, 100, 0, (SOCKADDR*)&ADD2, &len); if (recvfrom(client, recvBuf, 100, 0, (SOCKADDR*)&ADD2, &len) !=-1)//如果接收的字符不为0则启动 { cout << inet_ntoa(ADD2->sin_addr) << "发来消息" << endl; cout << "Client say:" << recvBuf << endl; cout << "reserve input:"; cin >> sendBuf; sendto(client, sendBuf, 100, 0, (SOCKADDR*)&ADD2, len);//向客户端发送消息 } } WSACleanup();//注销套接字 return 0;}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    非常抱歉,我需要您提供具体的问题,才能够给您提供解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^