вот это мой вопрос перед этим:Делаю все как положено,открываю сокет на клиенте и сервере..доходит до момента когда сервер приложение должно прослушать клиент(для этого использую функцию recv),проблема в том что я ее закинул в таймер и когда он должен выполнить ее,он тупо зависает и ждет пока что-то придет,ломаю голову не знаю как правильно решить эту задачу,в гугле уже надоело искать.
Поспрашивал,говорят можно сделать отдельный поток что бы не зависало,но я в этом вообще не понимаю.Нашел функцию select,думал может поможет,но что-то нифига.Вот код тот что в таймере:fd_set read_set, error_set;
struct timeval tv = {0,0};
tv.tv_sec = 1;
tv.tv_usec = 0;
FD_ZERO(&read_set);
FD_ZERO(&error_set);
FD_SET(sa, &read_set);
FD_SET(sa, &error_set);
if (select(sa + 1, &read_set, NULL, &error_set, &tv) == 1)
{
if (FD_ISSET(sa, &read_set))
{
bytesRecv = recv(sa, recvbuf, 50, 0);
err = WSAGetLastError();// 10057 = A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call)
if (bytesRecv == 0 || bytesRecv == WSAECONNRESET) {
textBox1->Text = "Connection Closed.\n";
WSACleanup();
}
else{
textBox1->Text = gcnew String(recvbuf);
}
};