udp与tcp两种服务器基本应用

本文对比分析了TCP与UDP两种网络通信协议的主要特点及其应用场景。TCP面向连接且可靠性高,适用于需要确保数据完整性的场景;UDP面向无连接,速度快但可能出现数据包丢失,适合实时传输。文中还详细介绍了如何使用这两种协议进行数据收发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Tcp
  tcp的特点:
  1. tcp协议通讯是面向连接的,tcp的客户端一旦建立,马上要与服务端建立连接。 
  2. tcp协议在连接中传输大数据量,tcp是基于IO流进行数据传输。
  3. 通过三次握手机制连接,可靠协议(保证数据传输的完整性)
  4. 因为tcp是面向连接的,所以效率稍低. 
  5. tcp协议是分客户端与服务端。 
 
  tcp协议下的Socket  :
Socket(客户端类)
ServerSocket(服务端类)

客户端
//第一步: 建立tcp客户端服务。
Socket socket= new Socket(InetAddress.getByName("192.168.1.13"),8080);
//获取socket的输入流对象
InputStream inputStream = socket.getInputStream();
//建立一个文件的输出流对象
FileOutputStream fileOutputStream = new FileOutputStream("f:\\美女.mp3");
//边读边写
……………………IO流中的内容
服务端
//第一步: 建立tcp的服务端。 
ServerSocket serverSocket = new ServerSocket(9090);
//第二步:接受客户端的连接
Socket socket = serverSocket.accept();   //  accept() 是一个阻塞型的方法,没有客户端与其连接的时候,一致等待下去
//第三步: 获取socket对应的流通道
InputStream inputStream = socket.getInputStream(); 
//第四步: 通过输入流通道读取数据
…………IO流中的内容



 Udp:
  udp协议的特点
  1. 发送数据都是需要把数据封装到数据包中再发送 的,面向无连接。
  2. 数据包大小不能超过64kb。
  3. 因为udp协议是面向无连接的, 所以会出现数据包丢失的情况。
  4. 因为面向无连接,所以速度快。
  5. udp协议是不分客户端与服务端,只分发送端与接收端。 
 
  数据包在什么情况下会丢失呢: 
  1. 带宽不足的时候。
  2. cpu处理能力不足 的时候。
 
  接收端:
  //第一步: 建立udp的服务,并且要监听一个端口
DatagramSocket socket = new DatagramSocket(9090);
//第二步: 准备 一个空的数据包
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
//第三步: 调用up的服务接受数据包, 数据其实是存入了字节数组中的。数据包是依赖于字节数据存储东西的。
socket.receive(packet);  // receive()该方法是一个阻塞型的方法, 如果没有接受数据的时候,会一直等待下去。
System.out.println(packet.getAddress().getHostAddress()+ "接收端接收到的数据:"+ new String(buf,0,packet.getLength()));  // getLength() 获取本次接收到的字节个数。
// getAddress()  获取对方的IP地址对象 , 
socket.close();

发送端:
//第一步: 建立udp的服务
DatagramSocket socket = new DatagramSocket();
//第二步: 准备数据,把数据封装到数据包中
String data = "这个是我的第一个udp的例子!!";
byte[] buf = data.getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.68"),9090);
//第三步:调用udp的服务发送数据
socket.send(packet);
//第四步: 关闭资源(释放端口号)
socket.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值