ipLocalPoint = new IPEndPoint(IPAddress.Parse("192.168.31.122"), 5000); //定義網絡類型,數據連接類型和網絡協議UDP mySocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //綁定網絡地址 mySocket.Bind(ipLocalPoint); //得到客戶機IP IPAddress ip = IPAddress.Parse("192.168.31.127"); int port = 5000; IPEndPoint ipep = new IPEndPoint(ip, port); RemotePoint = (EndPoint)(ipep); //啟動一個新的線程,執行方法this.ReceiveHandle, //以便在一個獨立的進程中執行數據接收的操作 RunningFlag = true; Thread thread = new Thread(new ThreadStart(this.ReceiveHandle)); thread.Start();
//ReceiveHandle數據接收函數
//接收數據處理線程 string msg; byte[] data = new byte[1024]; MyInvoke myI = new MyInvoke(UpdateMsgTextBox); while (RunningFlag) { if (mySocket == null || mySocket.Available < 1) { Thread.Sleep(200); continue; } //跨線程調用控件 //接收UDP數據報,引用參數RemotePoint獲得源地址 int rlen = mySocket.ReceiveFrom(data, ref RemotePoint); msg = Encoding.Default.GetString(data, 0, rlen); tbMsg.BeginInvoke (myI, new object[] { RemotePoint.ToString() + " : " + msg }); }
//發送udp數據包
string msg; msg = tbSendMsg.Text; //發送UDP數據包 byte[] data = Encoding.Default.GetBytes(msg); mySocket.SendTo(data, data.Length, SocketFlags.None, RemotePoint);
//更新接收的消息到winform
//接收數據顯示 this.tbMsg.AppendText(msg + "\n");