Comment traiter les données reçues avec WinSock ?
bonjour,
je suis entrain d'essayer de coder un programme qui peut recevoir des longues chaines avec winsock
j'ai trouvé une source qui m'a l'air très complete, en voici le début :
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
| Function ListenHost(P: Pointer): DWord; STDCALL;
Var
Address, Port :String;
Sock: TSocket;
Count: Integer;
Buffer: Array[0..1600] Of Char;
Data: String;
Time: TTimeVal;
FDS: TFDSet;
Len: Integer;
Temp: String;
Cmd: String;
Param: Array[0..100]of String;
D: DWord;
I: Word;
J: Word;
list_infos:TStringList;
Begin
Sock := rSock(P)^.Sock;
Count := rSock(P)^.Count;
Address := RemoteAddress(Sock);
Port := RemotePort(Sock);
Repeat
Time.tv_sec := 120;
Time.tv_usec := 0;
FD_ZERO(FDS);
FD_SET(Sock, FDS);
If Select(0, @FDS, NIL, NIL, @TIME) <= 0 Then Break;
Len := Recv(Sock, Buffer, 1600, 0);
If (Len <= 0) Then Break;
Data := String(Buffer);
ZeroMemory(@Buffer, SizeOf(Buffer)); |
j'ai cherché sur google mais je ne vois pas ce que l'utilisateur a cherché a faire, pourriez vous m'expliquer en détail à quoi sert ceci :
Time.tv_sec := 120;
Time.tv_usec := 0;
FD_ZERO(FDS);
FD_SET(Sock, FDS);
If Select(0, @FDS, NIL, NIL, @TIME) <= 0 Then Break;
merci
(en fait ce que je cherche à faire c'est un programme client et un serveur qui peut transferer des longues chaines très facilement, et qui, si il en reçoit deux a la fois, puisse les traiter séparement)