1. 程式人生 > >c# 使用UdpClient並指定了本地埠,用完之後需要關閉

c# 使用UdpClient並指定了本地埠,用完之後需要關閉

public class UDPSend
    {
        System.Net.Sockets.UdpClient UDP_C; //用於請求的UDP實列

        //建構函式
        public UDPSend(string host, int point)
        {
            CfgLoader xs = new CfgLoader();
            try
            {
                UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));
            }
            catch (Exception e)
            {
                string b = "";
            }
            UDP_C.Connect(host, point);
        }

        //傳送請求資訊
        public void sendMsg(string s)
        {
            byte[] msg = System.Text.Encoding.UTF8.GetBytes(s);
            UDP_C.Send(msg, msg.Length);
            UDP_C.Close();
        }

        public void sendMsg(byte[] s)
        {
            UDP_C.Send(s, s.Length);
            UDP_C.Close();
        }
}


最開始的時候,我在例項化UDP_C的時候沒有指定本機發送資料的埠(非對方接收資料的埠),不會出錯, 但後來指定了埠之後(UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));)

第二次呼叫就要出錯:通常每個套接字地址(協議/網路地址/埠)只允許使用一次

 

但是要命的這個VS,跟蹤到這一句,並不報錯,而是直接中斷了我的除錯模式,好吧,我寫上try catch,他竟然進不去try catch,而且連斷點都無法打到catch的程式碼塊裡面去。

 

無奈之下,執行到(UDP_C = new System.Net.Sockets.UdpClient(Convert.ToInt32(xs.GetPort()));)時,選中new後面的,然後右擊,按Q(什麼功能,自己去除錯的時候看),就看到錯誤資訊了。。。。

 

vs2008有時候還真有怪異的事情