Google+ Tools
Make Google+ profile picture
Make Google plus banners for profile
Create and share your Google Plus profile banners.

Profile image for mrk studios pckujawa on February 12, 2010

For some reason, the only .NET way to listen for UDP packets seems to be the Bind and Receive(Async) methods of the Socket class. The Listen method won't work with UDP in my tests.

As for releasing the Socket correctly, this forum post explains that you must call Socket.Shutdown instead of Socket.Close (it also says to call Socket.Disconnect(true), but I get exceptions when I do that). If you want to reuse the local endpoint (IP and port), then do Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

While debugging Socket issues, it's helpful to have a command-line open and use the netstat tool (e.g. "netstat -a -p UDP" to show all UDP sockets on all local interfaces).

Language
C#
Tags

Listening for and receiving UDP packets on a particular local IP and port


var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
string ip = "192.168.0.1";
//ip = "0.0.0.0"; //any
int port = 26010;
socket.Bind(new IPEndPoint(IPAddress.Parse(ip), port));

//socket.Listen(8); -> Listen doesn't work for UDP for some reason
var buffer = new byte[1024];
int numBytesReceived = socket.Receive(buffer);

Comments

blog comments powered by Disqus