TCP,UDP

左心房为你撑大大i 提交于 2020-08-19 16:26:17
  1. TCP协议:全称是Transmission Control Protocol,中文翻译为传输控制协议;

  特点:1、需要先建立连接

  2、可靠安全不丢失数据,但速度慢

  1. UDP协议:全称是User Datagram Protocol,中文翻译为用户数据报协议。

  特点:1、无需建立连接

  2、不可靠,可能丢失数据,但提升了速度

 

TCP协议:安全,但速度慢       不能接受任何数据丢失现象

UDP协议:不安全,但速度快。   能接受数据丢失现象,要求速度

TCP协议

1、服务器端(持续开启,先出现)

/*
* 服务器端必须先编写,先开启
* */
public static void main(String[] args) throws Exception {
    //1、创建服务器端
    ServerSocket ss = new ServerSocket(10001);
    //2、尝试和客户端进行连接
    //如果连接客户端成功,返回一个socket对象
    //如果连接客户端失败,返回一个null
    Socket s = ss.accept();//这句会阻塞线程
    //3、读取客户端发来的信息
    InputStream input = s.getInputStream();
    //展示控制台
    byte[] arr = new byte[1024];
    int len = input.read(arr);
    String str = new String(arr, 0, len);
    System.out.println(str);
    //4、关闭通信连接
    //通过socket对象获取的流不要close,会导致连接提前关闭
    s.close();
}

 

 

 

2、客户端:   127.0.0.1  代表自己

public static void main(String[] args) throws Exception {
    //1、创建Socket对象, 指明连接哪个IP,哪个端口
    Socket s = new Socket("192.168.36.49", 10001);
    //2、写出数据 (把数据发送给服务器端)
    OutputStream out = s.getOutputStream();
    out.write("这是我的入门案例".getBytes("utf-8"));
    out.flush();//刷新,会把数据传递给服务器端
    //3、关闭通信连接
    s.close();
}

 

 

​​​​​​​UDP

接收方:(服务器)

public static void main(String[] args) throws Exception {
    /*
    * 接收方
    * */
    //1、创建socket对象
    DatagramSocket ds = new DatagramSocket(10002);
    //2、创建数据包类
    //2.1、定义一个字节数组,用于存储数据
    byte[] arr = new byte[1024];
    //2.2、定义一个数据包类
    DatagramPacket dp = new DatagramPacket(arr, arr.length);
    //3、开始接收
    ds.receive(dp);//阻塞线程,等待发送方发送数据
    System.out.println(new String(arr,"utf-8"));
    //4、通信结束
    ds.close();
}

 

 

发送方:(客户端)

public static void main(String[] args) throws Exception {
    /*
    * 发送方(客户端)
    * */
    //1、创建socket对象
    DatagramSocket ds = new DatagramSocket();
    //获取接收端的IP地址
    InetAddress ia = InetAddress.getByName("127.0.0.1");
    //2、创建数据包
    //定义一个数组,用来保存待发送数据
    byte[] arr = "这是我的测试数据".getBytes("utf-8");
    //指明:发送的数据、长度、地址、端口号
    DatagramPacket dp = new DatagramPacket(arr, arr.length, ia, 10002);
    //3、发送数据
    ds.send(dp);
    //4、关闭通信
    ds.close();
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!