当然,BeginReceive()如果没有数据,永远不会结束.MSDN 建议调用Close()将中止BeginReceive().
但是,调用Close()套接字也会执行一个Dispose()on,就像在这个伟大的ansewr中所计算的那样,因此EndReceive()会抛出一个异常,因为对象已经被处理掉了(它确实!).
我该怎么办?
这些代码通过用户数据报协议提供发送数据.下面有两个代码.当我使用第一个代码来获取无法访问的IP地址时,我得到了三秒钟的延迟.
请查看新结果标题
刚刚打开新的C#CONSOLE APP并将这些代码粘贴在其中.(第一个代码)
using System;
using System.Net;
using System.Net.Sockets;
namespace Test
{
class Program
{
static void Main(string[] args)
{
byte[] data = { 1, 20, 60, 44, 244 };
while (true)
{
Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt"));
try
{
using (var client = new UdpClient())
{
// Please check IP Address, It must be unreachable...
// IPEndPoint ep = new IPEndPoint(IPAddress.Parse("192.168.1.141"), 55600);
// client.Connect(ep);
client.Send(data, data.Length, "192.168.1.141" , 55600);
}
Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt"));
Console.WriteLine(" ");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
} …Run Code Online (Sandbox Code Playgroud)