Autor Beitrag
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 14.11.08 11:35 
Ich sitze gerade an einem kleinen C#-Client. Der soll sich (sonst wäre er kein Client) mit einem Server verbinden. Ich dachte mir, ich könnte per UDP-Broadcast ja einfach in die Runde ein lautes "HALLO SERVER, GIB MAL DEINE IP" werfen. Der Server antwortet dann mit seiner IP und ich kann dann eine TCP-Verbindung aufbauen.

Ich möchte auf dem gleichen Port das Broadcast senden und die Nachricht wieder empfangen. Geht das überhaupt?

Der Server ist in Delphi geschrieben. Ich Habe einen TIdUDPServer von Indy. Der bekommt das Paket auch und schickt etwas zurück, aber blöderweise empfange ich auf Client-Seite nicht die Nachricht vom Server, sondern nur meinen eigenen Broadcast.

Frage:
1. Geht das überhaupt (auf gleichem Port senden und empfangen)?
2. Kann ich im Client irgendwie ALLE Antworten bekommen? Vielleicht gibt es ja mehrere Server und zudem könnte ich so meinen eigenen Request ausfiltern...

So sieht mein client aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private string RetrieveServerIP()
{
    int UDPPort = 1962;
    string stringData;

    UdpClient server = new UdpClient(UDPPort);
    server.EnableBroadcast=true;
    IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Broadcast, UDPPort);
    string query = "QUERYSERVER";
    byte[] data = Encoding.ASCII.GetBytes(query);
    server.Send(data, data.Length, remoteIpEndPoint);
            
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    data = server.Receive(ref sender);
    stringData = Encoding.ASCII.GetString(data, 0, data.Length);

    Log(String.Format("Message received from {0}: {1}", sender.ToString(),stringData));

     return (stringData);
}

Is klar, das hier nur die erste Antwort kommt, und die heißt immer "QUERYSERVER"... Irgendwie logisch, aber trotzdem :autsch:


Hat jemand eine Idee, oder eine Möglichkeit, das anders zu lösen?

_________________
Na denn, dann. Bis dann, denn.