У меня есть что-то подобное в моем коде
WSADATA wsadata;
int error = WSAStartup(0x0202, &wsadata);
SOCKADDR_IN target; //Socket address information
target.sin_family = AF_INET; // address family Internet
target.sin_port = htons (5005);
target.sin_addr.s_addr = inet_addr ("127.0.0.1");
clntSocket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); //Create socket
if (::connect(clntSocket, (SOCKADDR *)&target, sizeof(target)) == SOCKET_ERROR)
{
//Could not connect
__debugbreak();
}
else
{
//Connected - Now receive data
do
{
char my_stream[800];
iResult = recv(clntSocket,my_stream,sizeof(my_stream),0);
if(iResult<0)
{
int a = WSAGetLastError();
//Receives 10038 - WSAENOTSOCK
}
} while( iResult > 0 );
}
И я иногда (иногда) получал 10038. В котором говорится, что
Операция сокета без сокета.
Была предпринята попытка операции над чем-то, что не является сокетом. Либо параметр дескриптора сокета не ссылался на допустимый сокет, либо для выбора член fd_set недействителен.
Я что-то не так делаю при настройке сокета? Любые предложения о том, как решить проблему?