zoukankan      html  css  js  c++  java
  • 网络编程-UDP-TCP

    网络编程-UDP-TCP)

    UDP 特点:(面向无连接)(聊天)

    1、将数据及源和目的封装成数据包中,不须要建立连接。(封包。无连接)
    2、每一个数据包的限制大小在64k内。(小数据)
    3、因无连接。是不可靠协议。(不可靠。丢数据)
    4、不须要建立连接,速度快。(速度快)

    TCP 特点:(面向连接)(下载)

    1、建立连接,形成数据传输的通道。(传输,连接)
    2、在连接中进行大数据量传输。(大数据)
    3、通过三次捂手完毕连接。是可靠协议。(可靠。在? 我在。我知道你在了)
    4、必须建立连接,效率会稍低。(速度慢)

    (网络编程-Socket)(Socket也称套接字)

    1、Socket就是为网络服务提供的一种机制。
    2、通信的两端都有Socket。
    3、网络通信事实上就是Socket间的通信。
    4、数据在两个Socket间通过IO传输。


    注意:Socket能够理解为码头,有码头才有船能够对货(数据)进行装卸(读写)。

    可是因为船运输的方式不同。所以有了不同的服务方式。

    一个是UDP,另外一个是TCP。

    练习:建立一个文本转换server

    * client给服务端发送一个文本文件,服务端会将文本转成
    * 大写在返回给client
    * 并且client能够不断的进行文本转换,当client输入over时

    思路:
    * client
    * 既然是操作设备上的数据,那么就能够使用IO技术,并依照
    * IO的操作规律来思考,
    * 源:键盘录入
    * 目的:网络设备,网络输出流
    * 并且操作的是文本数据。能够选择字符流。
    * 步骤:
    * 1.建立服务
    * 2.获取键盘录入
    * 3.将数据发给服务端
    * 4.服务端返回大写数据
    * 5.关闭资源

    public static void main(String[] args) throws Exception {
    Socket s=new  Socket();
    // 定义读取键盘数据的流对象
    BufferedReader bufr=new 
    BufferedReader(new InputStreamReader(System.in));
    // 定义目的,将数据写入到socket输出流。发给服务端
    /*BufferedWriter  bufout=new 
    BufferedWriter(new OutputStreamWriter(s.getOutputStream()));*/
    // 定义一个socket读取流,读取服务端返回的大写信息
    BufferedReader   bufin=new 
    BufferedReader(new InputStreamReader(s.getInputStream()));

    PrintWriter  out=new PrintWriter(s.getOutputStream(),true);
    String line=null;
    while ((line=bufr.readLine())!=null) {

    if ("over".equals(line)) {
    break;
    }
    out.println(line);
    /*bufout.write(line);
    bufout.newLine();
    bufout.flush();*/
    String str=bufin.readLine();
    System.out.println("servce:"+str);

    }
    bufr.close();
    s.close();
    }


    }

    服务端
    *源:socket读取流
    *目的:socket输入流

    public static void main(String[] args) throws Exception {
    ServerSocket  ss=new ServerSocket(10005);
    Socket s=ss.accept();
    // 读取socket读取流中的数据
    BufferedReader bufin=new 
    BufferedReader(new InputStreamReader(s.getInputStream()));
    // 目的。

    socket输出流。将大写数据写入到socket输出流。并发送给client
    BufferedWriter bufout=new 
    BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    String line=null;
    while ((line=bufin.readLine())!=null){
    System.out.println(line);
    bufout.write(line.toUpperCase());
    bufout.newLine();
    bufout.flush();
    }
    s.close();
    ss.close();
    }



    }



  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6855806.html
Copyright © 2011-2022 走看看