C#UDP编程总结

// 如果只使用一个EndPoint,维持一个引用。
private static UdpClient udpClient;

static void Main(string[] args)
{
    if (udpClient != null)
    {
        // 这段很重要
        udpClient.Close();
    }
    udpClient = new UdpClient(10250);
    udpClient.Client.SendBufferSize = 120400;
    udpClient.Client.SendTimeout = 1000;
    udpClient.Client.ReceiveBufferSize = 120400;
    udpClient.Client.ReceiveTimeout = 1000;
    IPEndPoint endPoint;
    try
    {
        endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1025);
        udpClient.Connect(endPoint);
    }
    catch (Exception)
    {
        return;
        // 连不上目标端口
    }
    var bytes = new byte[0];
    udpClient.Send(bytes, bytes.Length);
    var receiver = new BackgroundWorker();
    receiver.WorkerSupportsCancellation = true;
    receiver.DoWork += delegate
        {
            while (receiver.CancellationPending)
            {
                try
                {
                    var a = udpClient.Receive(ref endPoint);
                    receiver.CancelAsync();
                }
                catch (Exception)
                {
                    return;
                    // 对方断开连接或超时
                }
            }
        };
    receiver.RunWorkerAsync();
}

 

posted on 2013-06-21 21:08  yao2yao4  阅读(900)  评论(0编辑  收藏  举报

导航