(1/2)
Sto iniziando a giocherellare con il multitheading e con i socket, e data la mia scarsissima esperienza in programmazione con il c++ (tre mesi appena) credo di stare a creare un pò di casino....
ho scribacchiato una specie di server che riesce a prendere più connessioni contemporanee... solo che non riesce a gestirle insieme! In particolare il problema sorge quando apro una seconda connessione, il thread che gestisce la prima connessione non va più avanti (o almeno a me così sembra...)
Ecco il codice
codice:// File multithreading.cpp #include <iostream> #include <winsock2.h> #include <winbase.h> #include <queue> using namespace std; void main() { SOCKET s,ss; DWORD ThreadId; WORD wVersionRequested; WSADATA wsaData; sockaddr_in any_addr, remote_addr; int addrlen; wVersionRequested = MAKEWORD(2,0); WSAStartup( wVersionRequested, &wsaData) ; any_addr.sin_family=AF_INET; any_addr.sin_port=htons( IPPORT_TELNET ); any_addr.sin_addr.s_addr=htonl ( INADDR_ANY ); s = socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) {exit(2);} if(bind(s,(struct sockaddr *) &any_addr, sizeof(struct sockaddr_in))) { WSACleanup(); exit(0); } listen(s,10); addrlen=sizeof(struct sockaddr); while(true) { ss=accept(s,(struct sockaddr *) &remote_addr,(LPINT)&addrlen); CreateThread(NULL,0,controlla, &ss, 0, &ThreadId); } }


Rispondi quotando