crosoft n'a pas tester à fond Winsock.
Je suis sur un serveur web multi-thread,
J'essaye un lien url vers mon serveur-web
quand je clique sur la croix pour quitter internet explorer ,
l'événement FD_CLOSE n'est pas reçu !
Avant je l'ai recevait , et plus maintenant !
Winsock Buggé ! buggé ! buggé !
Mon serveur WEB inutilisable je ne peux plus le continuer !
Microsoft me fait perdre du temps et de l'argent !
J'ai autre chose à faire !
Je vais le faire savoir !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 int wndprocmessage(HWND hwnd,int message,int wparam,int lparam) { if (oldwndprocmessage!=0) if (message==WM_USER+1) { switch (WSAGETSELECTEVENT(lparam)) { case FD_ACCEPT: { //Sleep(1000); int ClientSocket = accept(wparam, 0, 0); WSAAsyncSelect(ClientSocket, hwnd, WM_USER+1, FD_READ | FD_WRITE | FD_CLOSE); PSOCKETREQUEST rq=(PSOCKETREQUEST)malloc(sizeof(TSOCKETREQUEST)); rq->hsocket=ClientSocket; lessockets.push_back(rq); //rq->ID=createrequest(signsocket,rq,procsend,procclose); } break; case FD_READ: { char buf[256]; int ret = recv(wparam, buf, 128, 0); if (ret!=-1) { int ID=findsocket(wparam); if (ID!=0) { //sendofrecv(ID,buf,ret); } } } break; case FD_CLOSE: int ID = findsocket(wparam); if (ID!=0) { cancelrequest(ID); //cancelrequest qui appel la fonction closeconnection (closesocket) } else closesocket(wparam); //closesocket(wparam); break; }