JavaIO流之Socket入门编程-发送文本

2018-06-19  本文已影响0人  Wpixel

子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”

TCP/IP协议,这里就不讲了,对协议不了解的这边请 ✈✈✈✈✈ TCP协议详解

服务端

public static void main(String[] args) throws Exception {
    //指定端口
    int port = 5555;
    ServerSocket server = new ServerSocket(port);
    
    System.out.println("服务已经启动...");
    
    //使用线程池
    ExecutorService threadPool = Executors.newFixedThreadPool(100);
    
    while(true){
        Socket socket = server.accept();
        
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    //建立好连接后,从socket中获取输入流,并建立缓冲区进行读取
                    InputStream in = socket.getInputStream();
                    byte[] bytes = new byte[1024];
                    int len;
                    StringBuffer sb = new StringBuffer();
                    while((len = in.read(bytes)) != -1){
                        sb.append(new String(bytes, 0, len, "UTF-8"));
                    }
                    System.out.println("客户端传递的数据: "+sb.toString());
                    in.close();
                    socket.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        threadPool.submit(runnable);
    }
}

客户端

public static void main(String[] args) throws Exception {
    //ip地址
    String host = "localhost";
    //监听的端口
    int port = 5555;
    //与服务端建立连接
    Socket socket = new Socket(host, port);
    //获取连接获取输出流
    OutputStream os = socket.getOutputStream();
    String message = "海草";
    os.write(message.getBytes("UTF-8"));
    //关闭输出流
    os.close();
    //关闭socket
    socket.close();
}

客户端向服务端发送数据,服务端打印接受的数据

服务已经启动...
客户端传递的数据: 海草


作者是一名自由程序员,住在上海,喜欢音乐、小说、旅行、以及编程。

P.S. 如果您喜欢这篇文章并且希望学习编程技术的话,请关注一下

上一篇下一篇

猜你喜欢

热点阅读