none
udp Server端接收訊息問題 RRS feed

  • 問題

  • 利用UDP做出來傳送訊息,當啟動時就會卡住需要按停止鍵才可以關掉

    Form的話小弟我上傳不了所以就描述一下

    就一個button 跟一個RichTextBox

    程式碼如下

    private void Link_Click(object sender, EventArgs e)
            {
                // 開啟伺服器的 5555 連接埠,用來接收任何傳送到本機的訊息。
                IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5555);
                // 建立接收的 Socket,並使用 Udp 的 Datagram 方式接收。
                Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                // 綁定 Socket (newsock) 與 IPEndPoint (ipep),讓 Socket 接收 5555 埠的訊息。
                newsock.Bind(ipep);

                RichTextBox1.Text += "Waiting for a client... \n"; // 顯示 Waiting for client ...。

                // 建立 Remote 物件以便取得封包的接收來源的 EndPoint 物件。
                IPEndPoint senderr = new IPEndPoint(IPAddress.Any, 0);
                EndPoint Remote = (EndPoint)senderr;

                while (true) // 無窮迴圈,不斷接收訊息並顯示到螢幕上。
                {
                    byte[] data = new byte[1024]; // 設定接收緩衝區的陣列變數。
                    int recv = newsock.ReceiveFrom(data, ref Remote); // 接收對方傳來的封包。
                    // 將該封包以 UTF8 的格式解碼為字串,並顯示到螢幕上。
                    RichTextBox1.Text += Encoding.UTF8.GetString(data, 0, recv) + "\n";
                }
            }


    2019年10月20日 下午 12:40

所有回覆