zoukankan      html  css  js  c++  java
  • Java网络编程实例---------------------------------基本HTTP客户端及服务端多线程

    HTTP 1.0客户端

    package com.bq;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    
    public class Client {
        public Client() throws Exception {
            Socket server = new Socket(InetAddress.getLocalHost(), 8000);
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    server.getInputStream()));
            PrintWriter out = new PrintWriter(server.getOutputStream());
            BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                String str = wt.readLine();
                out.println(str);
                out.flush();
                if (str.equals("end")) {
                    break;
                }
                System.out.println(in.readLine());
            }
            server.close();
        }
    
        public static void main(String[] args) throws Exception {
            new Client();
        }
    }

    HTTP Server

    package com.bq;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
    
        public Server() throws IOException {
            ServerSocket server = new ServerSocket(8000);
            Socket client = server.accept();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    client.getInputStream()));
            PrintWriter out = new PrintWriter(client.getOutputStream());
            while (true) {
                String str = in.readLine();
                System.out.println(str);
                out.println("Receive from Client...." + str.toUpperCase());
                out.flush();
                if (str.equals("quit"))
                    break;
            }
            client.close();
        }
    
        public static void main(String[] args) throws IOException {
            new Server();
        }
    }

    HTTP Server 多线程

    package com.bq;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ThreadedServer {
        public ThreadedServer() throws Exception {
            ServerSocket server = new ServerSocket(8000);
            int socketNo = 1;
            while (true) {
                Socket socket = server.accept();
                System.out.println("----Start For socket No" + socketNo + "------");
                System.out.println("The socket name ======="
                        + socket.getInetAddress().getHostName());
                HandleAsocket task = new HandleAsocket(socket);
                new Thread(task).start();
                socketNo++;
            }
        }
        public static void main(String[] args) throws Exception {
            new ThreadedServer();
        }
    }
    
    class HandleAsocket implements Runnable {
        private Socket socket;
    
        public HandleAsocket(Socket socket) {
            this.socket = socket;
        }
    
        @Override
        public void run() {
    
            try {
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                PrintWriter out = new PrintWriter(socket.getOutputStream());
                while (true) {
                    String str = in.readLine();
                    System.out.println(str);
                    out.println("Receive from socket...." + str.toUpperCase());
                    out.flush();
                    if (str.equals("quit"))
                        break;
                }
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    adb常用命令和工具
    playwright学习记录
    vue,element-ui表格,多个单元格值可修改(点击聚焦后变成input,失去焦点请求保存)
    vue,element-ui表格,合并单元格,如果需要合并的数据隔行,需要重新排列数组
    cas-5.3.x接入REST登录认证,移动端登录解决方案
    企业级cas5.3登录页面修改
    cas实现单点登录mysql,oracle双版本
    Mycat实现MySQL主从复制和读写分离(双主双从)
    IDEA安装插件后默认存放的位置
    值得推荐的Idea十几大优秀插件
  • 原文地址:https://www.cnblogs.com/bq12345/p/3440784.html
Copyright © 2011-2022 走看看