必看"/>
C# Udp接收超时解决办法,新手必看
在使用UDP接收信息的时候,经常会遇到要持续接收的情况,基本上是用死循环的模式来做这个事情,但是如果持续接收不到消息该怎么办,那程序就阻塞了,一直在等待状态
C# 在创建Socket的时候是可以设置超时的
超时 会报异常
处理就好了
给个例子
这行代码进行设置:
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, StopTime);
public static void UdpReceive(int StopTime, int port){//创建一个UDPSocketSocket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);try{sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, StopTime);//创建一个端口为port的终结点接收来自任意端口的信息IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);sock.Bind(iep);EndPoint ep = (EndPoint)iep;byte[] data = new byte[1024];while (true){int recv = sock.ReceiveFrom(data, ref ep);string stringData = Encoding.ASCII.GetString(data, 0, recv);}}catch (Exception){MessageBox.Show("接收超时");sock.Close();}}
记得在catch 中关闭socket哦
更多推荐
C# Udp接收超时解决办法,新手必看
发布评论