---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! --------
网络编程
一TCP和UDP的特点:UDP
(1)将数据和源和目的封装成数据包,不需要建立连接。
(2) 每个数据大小限制在64k内。
(3)因不需要建立连接,所以不可靠。
(4)不需要建立连接,速度快。
TCP
(1) 建立连接,形成传输数据的通道。
(2) 在连接中进行大量数据传输。
(3)通过三次握手完成连接,是可靠协议。
(4)因为要建立连接,效率稍低。
二 socket
UDP 发送端实例:
public static void main(String[] args) throws Exception {
/*
创建UDP传输的发送端
1.建立udpSocket服务
2.提供数据,并将要发送的数据分装到数据包中
3.通过UDP的Socket服务,将数据发送出去
4.关闭Socket服务
*/
//1.建立UDP服务,使用DatagramSocket
DatagramSocket ds = new DatagramSocket();
//2.将要发送的数据封装到数据包中
String str = "hello udp";
//使用DatagramPack 将数据打包到文件中
byte [] buf = str.getBytes();
//其中new DatagramPacket(数组, 长度,地址,端口号);
DatagramPacket dp =
new DatagramPacket(buf, buf.length,InetAddress.getByName("127.168.1.1"),10000);
//3.发送数据,通过UDP中的send方法,将数据发送出去
ds.send(dp);
//4.关闭资源
ds.close();
UDP接收端实例:
public static void main(String[] args) throws Exception {
/*
建立UDP接收端的思路
1.定义UDPSocket 服务
2.定义数据包来接受数据,
3.通过SOcket方法中的 receive方法接收,并将接收到的数据写入到数据包中
4.通过数据包特有功能,对数据进行操作。
5.关闭资源
*/
//1.建立UDP SOcker 系统服务,其中一定要传入端口号
DatagramSocket ds = new DatagramSocket(10000);
//2.建立数据包,存储数据
byte [] buf = new byte [1024] ;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//3.通过Socket中的receive方法将数据写入
ds.receive(dp);//这个方法是阻塞式的,所以一定要注意
//通过数据包方法获取数据
String ip = dp.getAddress().getHostAddress();//获取IP
int port = dp.getPort();//获取端口
//4.解析数据,其中一定要重点的注意数据的解析的是datagrampacket
String str = new String(dp.getData(),0,dp.getLength());
//将端口数据打印
System.out.println(ip+port);
//打印数据
System.out.println(str);
//5.关闭资源
ds.close();
}
三 UDP协议应用场合与服务
UDP提供的服务是不可靠的、无连接的服务,UDP适用于无须应答并且通常一
次只传送少量数据的情况。由于UDP协议在数据传输过程中无须建立逻辑连接,对
数据报也不进行检查,因此UDP具有较好的实时性,效率高。在有些情况下,包括
视频电话会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
对于网络游戏,视频聊天,语音聊天这种应用,由于用户对数据实时性的要求很高,
而对数据完全正确性的要求又有所降低。(比如,聊天的时候,如果有个别数据包丢失
或者有误,充其量你就得到一些声音不清楚,不会影响聊天的体验。) UDP协议就诞生
在这种需求下。
所以,总结起来,UDP协议被广泛的使用在对网络数据传输实时性很高而对数据准确
性要求不是非常高的场所。
--------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -----------------