Bonjour, voilà mon problème : j'ai deux prog clients identiques mais sur deux ports différents, et un serveur avec deux ports.
Si je mets le même port sur les deux clients, le serveur reçoit bien les deux clients, mais il envoie uniquement au premier.
Si je mets un port différent aux deux clients, le serveur reçoit uniquement le premier mais il envoie aux deux.
Donc forcément l'idee c'est de pouvoir envoyer et recevoir sur les deux.
Je fournis les deux applis en CODE, merci d'avance pour l'aide...
CLIENT :
SERVEUR :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, lNet, Graphics, Dialogs, StdCtrls, ExtCtrls, lNetComponents; type { TForm1 } TForm1 = class(TForm) Button1: TButton; BoutonEnvoyer: TButton; Button2: TButton; Edit1: TEdit; AdresseIP: TEdit; Port: TEdit; Label1: TLabel; Label2: TLabel; TCP: TLTCPComponent; Memo1: TMemo; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure BoutonEnvoyerClick(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit1EditingDone(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TCPDisconnect(aSocket: TLSocket); procedure TCPError(const msg: string; aSocket: TLSocket); procedure TCPReceive(aSocket: TLSocket); procedure Timer1Timer(Sender: TObject); private public fnet:TLconnection; end; var Form1: TForm1; implementation uses lCommon; {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin fnet:=TCP; TCP.SocketNet:=LAF_INET; end; procedure TForm1.TCPDisconnect(aSocket: TLSocket); begin aSocket:=nil; memo1.Lines.add('disconnct'); end; procedure TForm1.TCPError(const msg: string; aSocket: TLSocket); begin aSocket:=nil; memo1.Lines.add('error '+ msg); end; procedure TForm1.TCPReceive(aSocket: TLSocket); var s:string; begin aSocket.GetMessage(s); memo1.Lines.add('server : '+ s); if s='stop' then timer1.Enabled:=false; if s='start' then timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); var jour:string; begin if dayofweek(Now)=2 then jour:='Lundi'; if dayofweek(Now)=3 then jour:='Mardi'; if dayofweek(Now)=4 then jour:='Mercredi'; if dayofweek(Now)=5 then jour:='Jeudi'; if dayofweek(Now)=6 then jour:='Vendredi'; if dayofweek(Now)=7 then jour:='Samedi'; if dayofweek(Now)=1 then jour:='Dimanche'; fnet.SendMessage('CLIENT1 : '+jour+' '+FormatDateTime('DD MM YYYY hh:nn:ss',now)); memo1.Lines.add('client : ' + jour+' '+FormatDateTime('DD MM YYYY hh:nn:ss',now)); end; procedure TForm1.Button1Click(Sender: TObject); begin fnet.Connect(AdresseIP.text,strtoint(Port.Text)); memo1.Lines.add('connected'); end; procedure TForm1.BoutonEnvoyerClick(Sender: TObject); begin fnet.SendMessage(edit1.text); memo1.Lines.add('client : ' + edit1.text); edit1.text:=''; end; procedure TForm1.Button2Click(Sender: TObject); begin if timer1.Enabled=false then begin timer1.Enabled:=true; end else begin timer1.Enabled:=false; end; end; procedure TForm1.Edit1EditingDone(Sender: TObject); begin BoutonEnvoyer.Click; end; end.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms,lNet, Controls, Graphics, Dialogs, StdCtrls, lNetComponents; type { TForm1 } TForm1 = class(TForm) BoutonRecevoir: TButton; BoutonEnvoyer: TButton; Memo2: TMemo; Port: TEdit; Edit2: TEdit; Label1: TLabel; LTCP: TLTCPComponent; LTCP2: TLTCPComponent; Memo1: TMemo; Port2: TEdit; procedure BoutonRecevoirClick(Sender: TObject); procedure BoutonEnvoyerClick(Sender: TObject); procedure Edit2EditingDone(Sender: TObject); procedure FormCreate(Sender: TObject); procedure LTCPDisconnect(aSocket: TLSocket); procedure LTCPError(const msg: string; aSocket: TLSocket); procedure LTCPReceive(aSocket: TLSocket); procedure LTCP2Disconnect(aSocket2: TLSocket); procedure LTCP2Error(const msg: string; aSocket2: TLSocket); procedure LTCP2Receive(aSocket2: TLSocket); private public fnet:TLconnection; fnet2:TLconnection; end; var Form1: TForm1; implementation uses lCommon; {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin fnet:=LTCP; LTCP.SocketNet:=LAF_INET; fnet2:=LTCP2; LTCP2.SocketNet:=LAF_INET; end; procedure TForm1.LTCPDisconnect(aSocket: TLSocket); begin memo1.lines.add('disconnected '); end; procedure TForm1.LTCPError(const msg: string; aSocket: TLSocket); begin memo1.lines.add('error : '+msg); end; procedure TForm1.LTCPReceive(aSocket: TLSocket); var s:string; begin aSocket.GetMessage(s); memo1.lines.add('client : ' + s); end; procedure TForm1.LTCP2Disconnect(aSocket2: TLSocket); begin memo2.lines.add('disconnected2 '); end; procedure TForm1.LTCP2Error(const msg: string; aSocket2: TLSocket); begin memo2.lines.add('error2 : '+msg); end; procedure TForm1.LTCP2Receive(aSocket2: TLSocket); var s:string; begin aSocket2.GetMessage(s); memo2.lines.add('client2 : ' + s); end; procedure TForm1.BoutonRecevoirClick(Sender: TObject); begin if fnet.Listen(strtoint(Port.Text))then memo1.Lines.add('listning....'); if fnet2.Listen(strtoint(Port2.Text))then memo2.Lines.add('listning2....'); end; procedure TForm1.BoutonEnvoyerClick(Sender: TObject); begin fnet.SendMessage(edit2.text); memo1.Lines.add('server : '+ edit2.Text); fnet2.SendMessage(edit2.text); memo2.Lines.add('server2 : '+ edit2.Text); edit2.Text:=''; end; procedure TForm1.Edit2EditingDone(Sender: TObject); begin if edit2.Text<>'' then BoutonEnvoyer.Click; end; end.
Partager