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)
Partager