Nabend,
ich hab vor einen Session Manager für ein selbstgeschriebenes Netzwerkspiel zu schreiben. Man soll in der Servervariante also einen Server erstellen können, den die Clients dann per Broadcast finden können. Einmal gefunden, werden die Adressen ausgetauscht und in einem Memo angezeigt.
Ich hab diesbezüglich einen Beitrag hier im forum gefunden, der mir vorerst weitergeholen hatte, aber nun bin ich doch wieder ratlos. Ich habe sowohl für die Server- als auch für die Clientvariante je zwei WSockets verwendet. Immer einen als Server und einen als Client.
Das Ganze sieht dann so aus:
Clientseite:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
with sesserver
do begin
Proto := '
udp';
Addr := '
0.0.0.0';
Port := '
6001';
LocalPort := '
0';
Listen;
end;
with sesclient
do begin
Proto := '
udp';
Addr := edit1.text
//Broadcast Adresse eingeben (etwa: 192.168.6.255)
Port := '
6001';
LocalPort := '
0';
Connect;
end;
sesclient.SendStr(GetMyIp + '
_Server?');
end;
procedure TForm2.sesserverDataAvailable(Sender: TObject; ErrCode: Word);
var incoming, msg,
ip :
string;
position : integer;
begin
incoming := sesserver.ReceiveStr;
position := pos('
_',incoming);
msg := copy(incoming, position, 7);
ip := copy(incoming, 1, position);
if msg = '
Server!'
then
memo1.Lines.add(
ip + msg);
end;
Serverseite:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
with sesserver
do begin
Proto := '
udp';
Addr := '
0.0.0.0';
Port := '
6001';
LocalPort := '
0';
Listen;
end;
procedure TForm3.sesserverDataAvailable(Sender: TObject; ErrCode: Word);
var incoming, msg,
ip :
string;
position : integer;
begin
incoming := sesserver.ReceiveStr;
position := pos('
_',incoming);
msg := copy(incoming, position, 7);
ip := copy(incoming, 1, position);
if msg = '
Server?'
then
begin
with sesclient
do begin
Proto := '
udp';
Addr :=
ip;
Port := '
6001';
LocalPort := '
0';
Connect;
end;
sesclient.SendStr(GetMyIp + '
_Server!');
end;
sesclient.close;
end;
end;
Tja das Problem ist nun, dass offenbar nichts beim Server ankommt, da eine Testausgabe von "msg" nichts ergibt.
Bin etwas ratlos. Mach ich was falsch? Gibts irgendwo ne Doku zu den ICS Kompos? Hab keine gefunden.
Achso noch zur Information: Ich habe bei allen 4 WSockets Multithreaded und Linemode auf True gesetzt. Weiß aber auch hier nicht wirklich, was das bewirkt, habe es nur in einem Beispiel gesehen, wo es damit funktionierte.
Gruß
Blackice
There are only 10 types of people in the world, those who understand binary and those who don't.