udp socket, wie sende ich etwas zum Server

Fridulin

Erfahrenes Mitglied
udp socket, wie sende ich etwas zum Server (kann mir keiner Helfen?)

Hallo,

Ich möchte gerne wissen wie man auf einen Server per Socks verbinden kann und den dann eine etwas senden kann? Kann mir da einer Helfen

Ich habe bisher folgendes:
Code:
string ip = "192.0.0.1";
 
IPAddress r_ip = IPAddress.Parse(ip);
 
int port = 23000;
 
socks = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 
socks.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,1000);
 
socks.SendTo(sendBytes, new IPEndPoint(r_ip,port)); // < um den hier geht es
 
return;

Wie muß jetzt genau die Variable sendBytes aussehen, wenn ich ihn folgendes senden will? ( was bedeuted new new IPEndPoint(r_ip,port) ? bzw. was für ein endpont muß gesetzt werden.)
PHP code:
Code:
		fwrite ($bfSocket, "\\status\\"); //Befehl senden
		$data = fgets($bfSocket); //Antwort lesen
		fclose($bfSocket); //Verbindung trennen

Und noch eine Frage hätte ich, wie lese ich die Antwort aus und gebe es in ein array, kann mir da einer den Befehl evtuell noch nennen?

Grüße udn vielen Dank
 
Zuletzt bearbeitet:
Hi, da du die Message an den Server als byte-array senden musst, musst du den
zu sendenden Text erstmal in ein byte-array konvertieren.
Dazu verwendest du
Code:
byte[] sendBytes = System.Text.Encoding.ASCII.GetBytes("zusendende Nachricht");

Wenn du eine andere Codierung brauchst, musst du halt das ASCII durch die entsprechende Codierung ersetzen.

EndPoint ist der jenige Verbindungspunkt (IP-Adresse und Port) an den du die Daten senden
willst.

Hoffe das hilft dir weiter.
 
HI,

vielen Hezrlichen Dank genau das habe ich gebraucht.

Eine Frage habe ich nur noch wie kann ich das was der Server zurück gibt wieder in eine andere Variable schreiben?


Vielen dank nochmal

Grüße
 
jetzt kannst du die vom Server gesendeten Pakete lesen:
Code:
byte[] serverResponse = new byte[1024];
int receivedBytes;

receivedBytes = socks.ReceiveFrom(serverResponse, new IPEndPoint(r_ip,port));

Dadurch wird die Nachricht des Servers in der Variable "serverResponse" als byte-array
gespeichet.
Du musst allerdings wissen wann die Nachricht des Server beendet ist, also ob ein Lesevorgang ausreicht oder ob noch weitere Daten verfügbar sind.
Es empfiehlt sich deshalb das lesen der Daten in eine Schleife zu packen, z.B.:

Code:
while( true )
{
 receivedBytes = socks.ReceiveFrom(serverResponse, new IPEndPoint(r_ip,port));
 // Verarbeitung der Daten; Prüfen ob weitere Daten erwartet werden
 // Falls dies nicht der Fall ist, dann Schleife mittels "break;" beenden.

}

Hoffe das hilft dir weiter.

P.S.: Die Servernachricht kannst du mittels System.Text.Encoding.ASCII.GetString(serverResponse) als Text auslesen.
 
Hi,

Perfekt genau das richtige funktioniert alles genau so wie ich es wollte!

Recht Herzlichen Dank nochmal für deine Hilfe!

Grüße
 
Hallo,
und zwar diese Sache hier habe ich mit grossem Intresse gelesen und jetzt meine Frage:"Was muss man zu welchem Server (z.B. Apache, FTP, oder meint Ihr eine eigene C# Server (selbst geschrieben (Chat Server))) schicken um eine Antwort zu gekommen?".
MfG
Reverent
 
Dafür musst du die entsprechenden Protokolle verwenden:

Webserver: HTTP / HTTPS
FTP-Server: FTP
etc.

Ein Protokoll definiert quasi die Sprache mit der eine Unterhaltung geführt wird.
 

Neue Beiträge

Zurück