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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)