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");
