工作需要用到UPD来设备通信,于是又开始学习这块的知识,首先,学习一个简单的入门程序。 界面如下: 先初始化后,可以给本机发送信息,随时接收
目录
1.例子代码说明初始化接收消息发送消息
2.简单原理
1.例子代码说明
初始化
Socket server
;
public void InitSocket()
{
server
= new Socket(AddressFamily
.InterNetwork
, SocketType
.Dgram
, ProtocolType
.Udp
);
server
.Bind(new IPEndPoint(IPAddress
.Parse(textBox1
.Text
), int.Parse(textBox2
.Text
)));
MessageBox
.Show("服务端已经开启");
Thread t1
= new Thread(ReceiveMsg
);
t1
.IsBackground
= true;
t1
.Start();
}
接收消息
用的while循环来实时获取,所以要记得用线程哦
public void ReceiveMsg()
{
while (true)
{
EndPoint port
= new IPEndPoint(IPAddress
.Any
, 0);
byte[] buffer
= new byte[1024];
int length
= server
.ReceiveFrom(buffer
, ref port
);
string message
= Encoding
.UTF8
.GetString(buffer
, 0, length
);
this.Invoke((EventHandler
)(delegate
{
richTextBox2
.AppendText(port
.ToString() +" :"+ message
+"\r\n");
}));
}
}
发送消息
private void button1_Click(object sender
, EventArgs e
)
{
Thread t2
= new Thread(SendMsg
);
t2
.IsBackground
= true;
t2
.Start();
}
public void SendMsg()
{
EndPoint port
= new IPEndPoint(IPAddress
.Parse(textBox4
.Text
), int.Parse(textBox3
.Text
));
string msg
= "ss";
this.Invoke((EventHandler
)(delegate
{
msg
= richTextBox1
.Text
;
}));
server
.SendTo(Encoding
.UTF8
.GetBytes(msg
), port
);
}
2.简单原理
网络传输协议有TCP和UDP两种,简单来说,就是用于不同设备间通过IP和端口号来通信。 **TCP:**客户端和服务器发送数据前需要“3次握手”连接,结束时使用“四次挥手”释放连接。 **UDP:**客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据。