AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Spiel! Suchen im Netzwerk!
Thema durchsuchen
Ansicht
Themen-Optionen

Spiel! Suchen im Netzwerk!

Ein Thema von pacman1986 · begonnen am 30. Apr 2006 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#1

Spiel! Suchen im Netzwerk!

  Alt 30. Apr 2006, 19:54
Egal bei welchem Spiel man geht auf netzwerk und bekommt eine liste mit den netzwerkspielen die online sind !
Weiss einer wie das die Spiele machen?

meine Überlegung wäre parallel 254 Clientsocket auf einmal die suche beginnen lassen! aber gibt das nicht ein fehler da socket ?
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Spiel! Suchen im Netzwerk!

  Alt 30. Apr 2006, 19:56
Probiers doch aus. jeder Clientsocket muß natürlich einen anderen Port benutzen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#3

Re: Spiel! Suchen im Netzwerk!

  Alt 30. Apr 2006, 20:41
Sowas nennt man IP-Broadcasting. Wenn du zum Beispiel an 192.168.1.255 und eine Subnetzmaske von 255.255.255.0 hast dann dürfte die Nachricht an alle Clients im Subnetz 192.168.1. gehen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Spiel! Suchen im Netzwerk!

  Alt 30. Apr 2006, 21:17
Funktioniert das auch bei windows ?
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Spiel! Suchen im Netzwerk!

  Alt 30. Apr 2006, 21:17
Das ist eine Eigenschaft des IP-Protokolls.
Markus Kinzler
  Mit Zitat antworten Zitat
NookShar

Registriert seit: 12. Aug 2004
Ort: Windeck
10 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Spiel! Suchen im Netzwerk!

  Alt 1. Mai 2006, 16:09
ich habe das ganze mit Hilfe der INDYs gelöst:

benötigte INDYs
Client:
IdIPWatch
IdUDPServer (Port 10026)
IdUDPClient (Port 10025, BroadcastEnabled = True)

Server:
IdIPWatch
IdUDPClient (Port 10026)
IdUDPServer (Port 10025, BroadcastEnabled = True)

Im Spielclient:
Delphi-Quellcode:
//starte "suche"
IdUDPClient1.Broadcast(idIPWatch1.CurrentIP, 10025)

//ergebnis erhalten
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
begin
  ListBox1.Items.Add(Copy(BytesToString(Adata), 0, length(Adata)));
end;
Im Server:
Delphi-Quellcode:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
var
  ip: string;
begin
  ip := Copy(BytesToString(Adata), 0, length(Adata));
  with IdUDPClient1 do
  begin
    Host := ip;
    Active := true;
    Send(ip, 10026, IdIPWatch1.CurrentIP);
    Active := false;
  end;
end;

Hoffe damit geholfen zu haben
Ich kann, weil ich will, was ich muß!
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Spiel! Suchen im Netzwerk!

  Alt 1. Mai 2006, 16:42
Auf jeden fall dankeschön

mfg pacman
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
tarnschaf

Registriert seit: 6. Mär 2007
Ort: Aschaffenburg
2 Beiträge
 
#8

Re: Spiel! Suchen im Netzwerk!

  Alt 6. Mär 2007, 14:17
Es gibt auch eine Möglichkeit einen Broadcast auf nur einem Port durchzuführen, manchmal kann man dazu gezwungen sein, weil man an ein bestehendes Protokoll anlehnt.

Dazu braucht man beim Broadcaster nur eine Indy-Komponente, und zwar einen IdUDPServer. (Beispiel bezieht sich auf Indy Version 10)

Den Broadcast startet man mit
IdUDPServer1.Active := true; // Damit Antworten empfangen werden
IdUDPServer1.Broadcast('hallo', 1234); // Sendet 'hallo' an alle auf Port 1234

Die Antworten fängt man in OnUPDRead

procedure Form.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
var
str : String;
begin
// Umwandeln der Daten in einen String
str := BytesToString(AData);
// IP-Adresse des Senders liegt in ABinding.PeerIP
end;


Interessanterweise scheint es dabei egal zu sein, ob man vorher einen Port oder die EnableBroadcast Eigenschaft des Servers festlegt. Weggelassen im Beispiel wurde die Gegenseite, d.h. der Client.

Grüße,
Michael
  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 20:00 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