您的位置:首页 > 理论基础 > 计算机网络

网络通信—udp使用领悟

2013-09-24 21:55 239 查看
一 了解TCP与UDP协议区别
TCP(传输控制协议):是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。
UDP(用户数据报协议):是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
大家可能很模糊,就这样举个生动的例子来讲吧:
tcp:一对一的信息传输机制,好比甲对乙打电话,必须保证两方面 一、有电话线,处于连接状态 二、双方一个打电话,一个接听
udp:一对多的信息传输机制,好比一是一个广播站,其他的是众多的收音机;他们之间没有发生连接,广播站只负责发出信号,收音机只是在连接时接收信号,需要确定两个因素 波段和收音机的信号接收地区(也即是指的是端口号)
二 我做了一个小例子来体会这种信息传递机制
重点区域代码实现:
private void button1_Click(object sender, EventArgs e)

{

int s = Convert.ToInt32(textBox4.Text);

UdpClient uc = new UdpClient(s);//确定广播发送站所处的地址(地区)

IPEndPoint remoteIp = new IPEndPoint(IPAddress.Parse(textBox2.Text), Convert.ToInt32(textBox3.Text));//确定广播信息的波段(IPAddress.Parse(textBox2.Text), 以及收听所在地区 后面的端口号
uc.Connect(remoteIp);//将广播发送站与所定义的广播信息波段、区域实现连接 达成传输层
Byte[] sendBytes = Encoding.UTF8.GetBytes(textBox1.Text);

uc.Send(sendBytes, sendBytes.Length);
uc.Close();

}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

{

while (true)//在这里建立一个死循环,保证始终在收听广播信息

{

UdpClient uc = new UdpClient(Convert.ToInt32(textBox3.Text));//收音机在使用之前,必须确定了其所在地 确定只能接受所在所能收到的信号

IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

//IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);// 在这里确定接收广播的波段,和所在地(空着或者与上述的所在扫地一样)
Byte[] receiveBytes;

string returnData;

receiveBytes = uc.Receive(ref RemoteIpEndPoint); // 这里加 ref 的目的是 通过 udpClient.Receive() 这个函数,得到服务器主机的 ip 地址。

returnData = Encoding.UTF8.GetString(receiveBytes);
textBox5.Text += "\r\n"+"发送方的Ip地址是:" + RemoteIpEndPoint.Address + "\r\n" + "发送信息是:" + returnData;

uc.Close();//这个地方的作用是在下次调用这个udpclient时,及时将所使用端口,解散掉,不然出现报错,端口被一直占用

}
注意一下几个方面问题:
一:使用完立刻关闭udpclient,否则在下次调用时出现端口被占用的错误提示
二:在接收事件中用到一个死循环,保证及时接受信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: