• TCP协议和UDP协议


    TCP和UDP同属于传输层协议

    1.TCP和UDP的区别:

      UDP协议

      (1)将数据源和目的地封装到数据包中,不需要建立连接;

      (2)每个数据包的大小限制最大64k;

      (3)因为不建立连接,所以安全性差,速度快。

       TCP协议

      (1)建立连接形成传输数据的通道,然后再传输数据,通过三次的握手和四次挥手;

      (2)安全性高,效率低;

    2.UDP编程

       (1)创建socket服务对象:

    public void server(){
            DatagramSocket ds = null;
            try {
                ds = new DatagramSocket(10000);
                //创建一个字节数组
                byte[] bs = new byte[1024];
                //创建数据包
                DatagramPacket dp = new DatagramPacket(bs,bs.length);
                System.out.println("UDP服务已启动...");
                //接收数据
                ds.receive(dp);
                //获得客户端的ip
                InetAddress inetAddress = dp.getAddress();
                //获得数据
                byte[] data = dp.getData();
                //获得数据的长度
                int length = dp.getLength();
                //创建接收的字符串
                String str = new String(data,0,length);
                System.out.println(inetAddress.getAddress()+"发送的数据是:"+str);
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(ds!=null){
                    ds.close();
                }
            }
        }
    

      (2)创建UDP客户对象:

     public static void main(String[] args){
            DatagramSocket ds = null;
            try {
                ds = new DatagramSocket();
                String str = "Hellow!";
                byte[] data = str.getBytes();
                //创建数据包
                DatagramPacket dp = new DatagramPacket(data,data.length, InetAddress.getByName("192.168.29.1"),10000);
                ds.send(dp);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            }
        }
    

    3.TCP网络编程

      (1)TCP服务端创建:

    public static void main(String[] args){
            ServerSocket ss = null;
            Socket s = null;
            BufferedReader reader = null;
            //创建服务端套接字
            try {
                ss = new ServerSocket(9999);
                System.out.println("服务启动...");
                //接收客户的请求
                s = ss.accept();
                //获取流对象
                InputStream inputStream = s.getInputStream();
                reader = new BufferedReader(new InputStreamReader(inputStream));
                //读取数据
                String line= reader.readLine();
                InetAddress address = s.getInetAddress();
                //获取客户端的ip地址
                String ip = address.getHostAddress();
                System.out.println(ip+"发送的数据为:"+line);
    
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    if(reader!=null){
                        reader.close();
                    }
                    if(s!=null){
                        s.close();
                    }
                    if(ss!=null){
                        ss.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    

      (2)TCP客户端创建:

    public  static  void main(String[] args){
            //创建请求socket
            Socket s = null;
            BufferedWriter writer = null;
            try {
                s = new Socket("127.0.0.1",9999);
                //获得输出流
                OutputStream out = s.getOutputStream();
                writer = new BufferedWriter(new OutputStreamWriter(out));
                writer.write("hellow!");
                writer.newLine();
                writer.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(writer!=null){
                        writer.close();
                    }
                    if(s!=null){
                        s.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    

      

     

      

    当你发现自己的才华撑不起野心时,就请安静下来学习吧
  • 相关阅读:
    spring scheduled单线程和多线程使用过程中的大坑!!不看到时候绝对后悔!!
    在idea中配置 gitignore忽略文件(一)
    Cron表达式范例:每隔5秒执行一次:*/5 * * * * ?
    软件——protel 的pcb电路图制作
    【纪中受难记】——Day21:调整心态
    2019第十届蓝桥杯C/C++ B组省赛 —— 第二题:年号字串
    2019第十届蓝桥杯C/C++ B组省赛 —— 第三题:数列求值
    2019第十届蓝桥杯C/C++ B组省赛 —— 第三题:数列求值
    2019第十届蓝桥杯C/C++ B组省赛 —— 第一题:组队
    2019第十届蓝桥杯C/C++ B组省赛 —— 第一题:组队
  • 原文地址:https://www.cnblogs.com/smallVampire/p/12048045.html
Copyright © 2020-2023  润新知