Пишу TCP сервер на MFC.
Инициализирую так:
CCYBERRMSDlg* dlg = (CCYBERRMSDlg*)Param;
CString ip, port;
dlg->GetDlgItem(IDC_EDIT2)->GetWindowTextA(ip);
dlg->GetDlgItem(IDC_EDIT3)->GetWindowTextA(port);
string IP, PORT;
IP = string(CT2CA(ip));
PORT = string(CT2CA(port));
WSAData wsaData;
WORD DllVersion = MAKEWORD(2, 1);
if (WSAStartup(DllVersion, &wsaData) != 0) {
return false;
}
SOCKADDR_IN addr;
int sizeofaddr = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(IP.c_str());
addr.sin_port = atoi(PORT.c_str());
SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
if (WSAGetLastError() != 0) {
dlg->AddLog("bind error");
return -1;
}
if (listen(sListen, SOMAXCONN) != 0) {
dlg->AddLog("listen error");
return -1;
}
Это всё запускается и работает в отдельном потоке.
Как итог - в лог бокс выводится "listen error".
Изначально всё работало нормально, но потом что-то изменил, не помню что, и всё работать перестало. Магия программирования...