UdpClient vs Socket

04/10/2008 - 12:23 von Tim | Report spam
Hallo NG,

ich versuche gerade einen Server per Udp abzufragen. Ich schicke ein paar
bytes hin und erwarte
dann die Antwort vom Server. Wenn ich die UdpClient-Klasse mit folgendem
Code aufrufe funktioniert das auch:

UdpClient udpClient = new UdpClient(11008);
udpClient.Connect(ip, port);
udpClient.Send(queryCommand, queryCommand.Length);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
responseData = udpClient.Receive(ref RemoteIpEndPoint);
countBytes = responseData.Length;

Das Problem dabei ist das ich mit der UdpClient-Klasse keinen Timeout setzen
kann für den Fall das mal keine
Antwort kommt. Also habe ich folgendes probiert was leider immer zu einem
Timeout führt:

UdpClient udp = new UdpClient(11008);
udp.Connect(ip, port);
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
ProtocolType.Udp);
IPEndPoint end = new IPEndPoint(IPAddress.Any, 0);
listener.Bind(end);
listener.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout, 5000);
udp.Send(queryCommand, queryCommand.Length);
listener.Receive(responseData, 0, responseData.Length, SocketFlags.None);
countBytes = responseData.Length;

hat jemand eine Idee worin genau der Unterschied zwischen den beiden Codes
besteht und warum letzterer immer einen Timeout liefert
und nichts empfàngt ?
 

Lesen sie die antworten

#1 Frank Dzaebel
04/10/2008 - 13:07 | Warnen spam
Hallo Tim,

Das Problem dabei ist das ich mit der UdpClient-Klasse keinen Timeout
setzen kann ...



ich mache da gerne über die Client-Eigenschaft
des UdpClient (-> SendTimeout, ReceiveTimeout)
Ein SNMP-Beispiel:

http://groups.google.com/group/micr...bc8d43c6b9

[UdpClient.Client-Eigenschaft (System.Net.Sockets)]
http://msdn.microsoft.com/de-de/lib...lient.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen