AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit ICS und Broadcasting
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit ICS und Broadcasting

Ein Thema von Blackice · begonnen am 26. Jan 2005 · letzter Beitrag vom 27. Jan 2005
Antwort Antwort
Blackice

Registriert seit: 16. Jan 2005
3 Beiträge
 
#1

Problem mit ICS und Broadcasting

  Alt 26. Jan 2005, 22:52
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.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Problem mit ICS und Broadcasting

  Alt 26. Jan 2005, 23:22
Wäre DirectPlay nicht besser dafür geeignet?
Oder besser: managed DirectPlay

Ich habe zwar noch nix damit gemacht (kam noch nie in die Verlegenheit ein Sopiel zu schreiben ), aber die Klassenstruktur sieht eigentlich ganz nett aus.

Edit: Falscher Link...
  Mit Zitat antworten Zitat
Blackice

Registriert seit: 16. Jan 2005
3 Beiträge
 
#3

Re: Problem mit ICS und Broadcasting

  Alt 27. Jan 2005, 01:21
klar wäre es das, aber da wir unter Delphi programmiert haben benötige ich das ganze für delphi. Leider Gottes steht uns in der Schule dann auch nur Delphi 3 zur Verfügung. Es gibt ja DirectX Ports für Delphi. etwa DelphiX o.ä. aber damit hatte ich zu große Schwierigkeiten beim eigentlichen Netzcode. Hier geht's ja nur um den Sessionmanager. Dass man das mit ICS machen kann, weiss ich. Nur nicht wo mein Fehler ist. Ich habe die gezeigte Lösung ja bereits hier im Board gefunden, leider steht dort nicht mehr als das, was ich schon in codeform geschrieben habe.
There are only 10 types of people in the world, those who understand binary and those who don't.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz