Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WinSock2绑定错误 我开始制作C++服务器,但我不能绑定到套接字。< /P> #pragma once #include <WinSock2.h> #include <thread> #include "Logging.h" namespace network { static SOCKET sock; static VOID startAccept() { while (true) { struct sockaddr_in serv_addr, cli_addr; int clilen = sizeof(cli_addr); SOCKET accepted; if (accepted == NULL) { accepted = accept(sock, (struct sockaddr *) &cli_addr, &clilen); if (accepted < 0) { core::writeln("Error accept: " + WSAGetLastError()); } else { core::writeln("New connection from " + cli_addr.sin_addr.S_un.S_addr); } } } } static VOID connect(const char* ipAddress, u_short port) { struct sockaddr_in serv_addr, cli_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) { core::writeln("Error creating socket: " ); perror("error:"); return; } else if (bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { core::writeln("Error binding to socket: " ); perror("error:"); return; } else if (listen(sock, 10) < 0) { core::writeln("Error listening socket: "); return; } else { core::writeln("Bound WinSock to " + serv_addr.sin_addr.S_un.S_addr); std::thread accepting(startAccept); accepting.join(); } } };_C++_Windows_Sockets_Winsock2 - Fatal编程技术网

WinSock2绑定错误 我开始制作C++服务器,但我不能绑定到套接字。< /P> #pragma once #include <WinSock2.h> #include <thread> #include "Logging.h" namespace network { static SOCKET sock; static VOID startAccept() { while (true) { struct sockaddr_in serv_addr, cli_addr; int clilen = sizeof(cli_addr); SOCKET accepted; if (accepted == NULL) { accepted = accept(sock, (struct sockaddr *) &cli_addr, &clilen); if (accepted < 0) { core::writeln("Error accept: " + WSAGetLastError()); } else { core::writeln("New connection from " + cli_addr.sin_addr.S_un.S_addr); } } } } static VOID connect(const char* ipAddress, u_short port) { struct sockaddr_in serv_addr, cli_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) { core::writeln("Error creating socket: " ); perror("error:"); return; } else if (bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { core::writeln("Error binding to socket: " ); perror("error:"); return; } else if (listen(sock, 10) < 0) { core::writeln("Error listening socket: "); return; } else { core::writeln("Bound WinSock to " + serv_addr.sin_addr.S_un.S_addr); std::thread accepting(startAccept); accepting.join(); } } };

WinSock2绑定错误 我开始制作C++服务器,但我不能绑定到套接字。< /P> #pragma once #include <WinSock2.h> #include <thread> #include "Logging.h" namespace network { static SOCKET sock; static VOID startAccept() { while (true) { struct sockaddr_in serv_addr, cli_addr; int clilen = sizeof(cli_addr); SOCKET accepted; if (accepted == NULL) { accepted = accept(sock, (struct sockaddr *) &cli_addr, &clilen); if (accepted < 0) { core::writeln("Error accept: " + WSAGetLastError()); } else { core::writeln("New connection from " + cli_addr.sin_addr.S_un.S_addr); } } } } static VOID connect(const char* ipAddress, u_short port) { struct sockaddr_in serv_addr, cli_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock < 0) { core::writeln("Error creating socket: " ); perror("error:"); return; } else if (bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { core::writeln("Error binding to socket: " ); perror("error:"); return; } else if (listen(sock, 10) < 0) { core::writeln("Error listening socket: "); return; } else { core::writeln("Bound WinSock to " + serv_addr.sin_addr.S_un.S_addr); std::thread accepting(startAccept); accepting.join(); } } };,c++,windows,sockets,winsock2,C++,Windows,Sockets,Winsock2,但每次尝试绑定时,我都会得到以下输出: 绑定到套接字时出错: 错误:没有错误 但是套接字没有绑定。我做错了什么 已修复,必须使用WSAStartup。您的错误报告已中断。您已经找到了WSAGetLastError(),但是您没有始终如一地使用它,使用perror()是不正确的。修复该代码,您现在将看到错误代码10093,wsanotinialised,“要么应用程序没有调用WSAStartup,要么WSAStartup失败”。你没有。WSAGetLastError确实不起作用。所以我试试看。是

但每次尝试绑定时,我都会得到以下输出:

绑定到套接字时出错: 错误:没有错误

但是套接字没有绑定。我做错了什么



已修复,必须使用WSAStartup。

您的错误报告已中断。您已经找到了WSAGetLastError(),但是您没有始终如一地使用它,使用perror()是不正确的。修复该代码,您现在将看到错误代码10093,wsanotinialised,“要么应用程序没有调用WSAStartup,要么WSAStartup失败”。你没有。WSAGetLastError确实不起作用。所以我试试看。是的,现在它工作了。谢谢:)WSAGetLastError很好用,perror()不行。使用FormatMessage()将WASGetLastError返回的错误代码转换为字符串。
socket()
成功,无需调用
WSAStartup()
int _tmain(int argc, _TCHAR* argv[])
{
connect("127.0.0.1", 500);
}