Так и не понял в чём заключалась проблема, но мне кажется что нужно было использовать
::bind
а не
bind
Нашел рабочий код тут:
https://www.binarytides.com/code-tcp-socket-server...
WSACleanup();
WSADATA wsaData;
SOCKET sListen, newConnection;
struct sockaddr_in server, client;
int c;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
dlg->AddLog("Error WSAStartup");
return -1;
}
if ((sListen = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
dlg->AddLog("Error create socket sListen");
return -1;
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(IP.c_str());
server.sin_port = htons(atoi(PORT.c_str()));
int result = ::bind(sListen, (struct sockaddr*)&server, sizeof(server));
if (result != 0) {
string code = to_string(WSAGetLastError());
dlg->AddLog(string("Bind error: " + code).c_str());
}
listen(sListen, 256);
dlg->AddLog("Waiting for connections...");
c = sizeof(struct sockaddr_in);
newConnection = accept(sListen, (struct sockaddr*)&client, &c);
if (newConnection == INVALID_SOCKET) {
dlg->AddLog("Error accept");
}
dlg->AddLog("Connected new user!");
closesocket(sListen);