Advertisement

day072:UDP协议发送数据、接收数据(DatagramSocket、DatagramPacket);TCP协议发送数据、接收数据(Socket、ServerSocket)

阅读量:

目录

一、UDP协议

1、UDP协议发送数据

(1)步骤

(2)代码示例

2、UDP协议接收数据

(1)步骤

(2)代码示例

二、TCP协议

1、TCP协议发送数据

(1)步骤

(2)代码示例

2、TCP协议接收数据

(1)步骤

(2)代码示例



一、UDP协议

1、UDP协议发送数据

(1)步骤

  • 创建发送数据的DatagramSocket对象
  • 创建将数据打包的DatagramPacket对象
  • 调用DatagramSocket对象的方法将数据发送

(2)代码示例

复制代码
 public class sendDemo_02 {

    
     public static void main(String[] args) throws IOException {
    
     //创建发送端的Socket对象(DatagramSocket)
    
     DatagramSocket ds = new DatagramSocket();
    
  
    
     //创建数据,并将数据打包
    
     //DatagramPacket (byte[] bytes ,int length,InetAddress address,int port)
    
     //上一行注释为:构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号
    
     byte[] bytes = "hello,UDP,Im coming".getBytes();
    
     //int length=bytes.length;
    
     //InetAddress address = InetAddress.getByName("192.168.80.1");
    
     //int port=10023;
    
     //DatagramPacket dp  =new DatagramPacket(bytes,length,address,port);
    
     //调用DatagramSocket的方法发送数据
    
  
    
     //上面代码可以优化为:
    
     DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.80.1"), 10023);
    
     //发送数据包
    
     ds.send(dp);
    
     //关闭发送端
    
     ds.close();
    
     }

2、UDP协议接收数据

(1)步骤

  • 创建接收端的DatagramSocket对象
  • 创建一个数据包,用于接收数据
  • 调用DatagramSocket对象的方法接收数据
  • 解析数据包,把数据在控制台显示
  • 关闭接收端

(2)代码示例

复制代码
     public static void main(String[] args) throws IOException {

    
     //创建接收端的DatagramSocket对象,参数是发送端的端口号
    
     DatagramSocket ds = new DatagramSocket(10023);
    
  
    
     //创建一个数据包,用于接收数据
    
     byte[] bytes = new byte[1024];//创建一个字节数组,用于存入读出的数据
    
     DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//把数组放入数据包中
    
  
    
     //调用DatagramSocket对象的方法接收数据
    
     ds.receive(dp);
    
  
    
     //解析数据包,把数据在控制台显示
    
     byte[] datas = dp.getData();
    
  
    
     // int getLength() 返回所发送数据的或所接受数据的真实长度
    
     int len = dp.getLength();
    
     String dataString = new String(datas, 0, len);
    
     System.out.println("数据是:" + dataString);
    
  
    
     //关闭接收端
    
     ds.close();
    
     }

二、TCP协议

1、TCP协议发送数据

(1)步骤

  • 创建客户端的Socket对象
  • 获取OutputStream输出流,写数据
  • 释放资源

(2)代码示例

复制代码
   public static void main(String[] args) throws IOException {

    
     //创建客户端的Socket对象
    
     //Socket(InetAddress address,int port)   第一个参数为主机名或IP地址,第二个参数为端口号
    
     //Socket s = new Socket(InetAddress.getByName("192.168.80.1"),10023);  可优化为:
    
     Socket s = new Socket("192.168.80.1", 10023);
    
  
    
     //获取输出流,写数据
    
     OutputStream os = s.getOutputStream();
    
     os.write("hello,TCP,Im coming".getBytes());
    
  
    
     //释放资源
    
     s.close();
    
     }

2、TCP协议接收数据

(1)步骤

  • 创建服务器端的ServerSocket对象
  • accept() 监听客户端连接,返回一个Socket对象
  • 获取InputStream输入流,读数据
  • 释放资源

(2)代码示例

复制代码
 public class receiveDemo_02 {

    
     public static void main(String[] args) throws IOException {
    
     //创建服务器端的ServerSocket对象,参数为接收端的端口号
    
     ServerSocket ss = new ServerSocket(10023);
    
  
    
     //Socket accept() 监听客户端连接
    
     Socket s = ss.accept();
    
  
    
     //获取InputStream输入流,读数据
    
     InputStream is = s.getInputStream();
    
     byte[] bys = new byte[1024];//创建一个字节数组,用于存入读出的数据
    
     int len = is.read(bys);
    
     String data = new String(bys, 0, len);
    
     System.out.println("数据是:" + data);
    
  
    
     //释放资源
    
     ss.close();
    
     }
    
 }

全部评论 (0)

还没有任何评论哟~