Я сейчас пытаюсь создать серверное и клиентское приложение, использующее winsock, с основной программой, мне нужен второй поток, чтобы всегда прослушивать данные.
Это сообщение не блокируется.У меня действительно возникают проблемы с поиском способа связи между потоками, пример того, что я ищу: сервер отправляет клиенту строку, например, «viewData», и этот вид информации будет выбираться основным потоком, а затем конкретнымфункция также может быть вызвана.
Вот пример моей ветки, я создаю ее, используя _beginthread( (void(*)(void*))SocketReceive, 0, (void*)&ohuman );
//thread focused on listening to connection
void SocketReceive( comms* ohuman)
{
char buffer[1000];
int inDataLength;
std::string contents;
for(;;)
{
if(!ohuman->getGameOn())
{
// Display message from server
memset(buffer,0,999);
inDataLength=recv((INT_PTR)ohuman->getSocket(),buffer,1000,0);
contents = std::string(buffer); //create a string from the char array for easy access
//only display if we get some content
if(inDataLength > 0)
{
//???DealWithMessage(
int nError=WSAGetLastError();
if(nError!=WSAEWOULDBLOCK&&nError!=0)
{
std::cout<<"Winsock error code: "<<nError<<"\r\n";
std::cout<<"Server disconnected!\r\n";
// Shutdown our socket
shutdown((INT_PTR)ohuman->getSocket(),0x01);
// Close our socket entirely
closesocket((INT_PTR)ohuman->getSocket());
break;
}
}
}
_endthread();
}
Я также видел этот сайт, который должен помочь с ITC, любые советы по этому поводу.> http://derkarl.org/itc/
С помощью простого основного цикла я заинтересован в любом подходе, который может сработать, я пытался разобраться в этом в течение нескольких дней без удачи, любая помощь очень ценится.