zoukankan      html  css  js  c++  java
  • 网络编程-TCP连接-length

    在使用readLine方式时,常常会遇到因为没有结束标记,而导致阻塞现象。

    如果不想使用结束标记,这里可以使用一个固定长度的byte[],来获取流。

    server

    package com.net.tcp.length;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class MyServerL {
    
        public static void main(String[] args) {
            
                ServerSocket ss;
                try {
                    ss = new ServerSocket(30000);
                    Socket s= ss.accept();
                    byte[] rin = new byte[8];
                    s.getInputStream().read(rin);
                    System.out.println(new String(rin,0,8));
                
                    
                    PrintStream ps = new PrintStream(s.getOutputStream());
                    ps.println("收到消息aa");
                    ps.flush();
                    ps.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                    }                
    
    }

    Client

    package com.net.tcp.length;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    
    public class MyClientL {
    
        public static void main(String[] args) {
            Socket s = new Socket();
            try {
                s.connect(new InetSocketAddress("127.0.0.1", 30000), 10000);
                PrintStream ps = new PrintStream(s.getOutputStream());
                ps.println("发送消息aa");
                ps.flush();
                
                byte[] rin = new byte[8];
                s.getInputStream().read(rin);
                System.out.println(new String(rin,0,8));
                
                ps.close();
                s.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
  • 相关阅读:
    为什么 JVM 不用 JIT 全程编译?
    JVM Internals
    JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
    Dart编译技术与平台
    Dart 库预览
    使用VSCode开发Flutter
    环境变量
    使用Homebrew管理你的mac开发包
    brew 又叫Homebrew,是Mac OSX上的软件包管理工具
    使用async/await消除callback hell
  • 原文地址:https://www.cnblogs.com/moonpool/p/5518866.html
Copyright © 2011-2022 走看看