2016-03-20 4 views
1

Я хочу, чтобы подключился к определенному серверу с этим клиентским кодом с помощью winsock. Но создано сокет is недействительный, так что я получаю "INVALID SOCKET".winsock client socket недействителен

//Creating a socket for connecting to server 
SOCKET hSocket; 
hSocket = socket(AF_INET, SOCK_STREAM,0); 
if (hSocket == INVALID_SOCKET) //this is true! 
{ 
    cout << "INVALID SOCKET" << endl; 
} 

/* This code assumes a socket has been created and its handle 
is stored in a variable called hSocket */ 
sockaddr_in sockAddr; 

sockAddr.sin_family = AF_INET; 
sockAddr.sin_port = htons(54123); 
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 

// Connect to the server 
if (connect(hSocket, (sockaddr*)(&sockAddr), sizeof(sockAddr)) != 0) 
{ 
    cout << "ERROR while connecting" << endl; 
} 

ответ

2

Они Единственная проблема, я могу думать о том, что вы не WSAStartup() Winsock. Пожалуйста, проверьте https://msdn.microsoft.com/en-us/library/windows/desktop/ms742213%28v=vs.85%29.aspx, если вы этого не сделали. Вы также можете использовать WSAGetLastError, чтобы узнать, что не так.

Добавить в верхней части кода:

WSADATA wsaData; 

//activate ws2_32.lib 
int res = WSAStartup(MAKEWORD(2, 0), &wsaData); 
if (res == 0){ 
    cout << "WSAStartup successful" << endl; 
} 
else { 
    cout << "Error WSAStartup" << endl; 
    return -201; 
}