美文网首页
TCP转发通讯,模型,大概思路

TCP转发通讯,模型,大概思路

作者: deast | 来源:发表于2020-07-02 13:34 被阅读0次

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Arrays;

    public class TCPsocket {

    public static void main(String[] args) {
        try {
            // 客户端
            Socket a = new Socket("7.15.12.14", 8007);
            System.out.println("socket连接成功!");
    

    // // 服务端
    @SuppressWarnings("resource")
    ServerSocket sever = new ServerSocket(8006);
    System.out.println("服务启动成功!");
    Socket b = sever.accept();

            new ClientListener(a, b).start();
            
            new ClientListener1(b, a).start();
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    }
    
    static class ClientListener extends Thread {
    
        private Socket server;
        private Socket socket;
    
        public ClientListener(Socket a,Socket b) {
            // TODO Auto-generated constructor stub
            this.server = b;
            this.socket = a;
        }
    
        @Override
        public void run() {
            try {
                OutputStream outputStream = server.getOutputStream();
                InputStream inputStream = socket.getInputStream();
                byte[] buf = new byte[8192];
                int read = 0;
                while ((read = inputStream.read(buf)) != -1) {
                    byte[] buf1 = new byte[read];
                    for (int i = 0; i < buf1.length; i++) {
                        buf1[i] = buf[i];
                    }
                    System.out.println("客户端:  " + Arrays.toString(buf1));
                    outputStream.write(buf);
                    outputStream.flush();
                    System.out.println("服务端发送成功!");
                }
            } catch (IOException e) {
                System.out.println(server.getInetAddress().getHostName() + "客户端接收异常!" + e);
            }
        }
    
    }
    
    static class ClientListener1 extends Thread {
    
        private Socket server;
        private Socket socket;
    
        public ClientListener1(Socket b, Socket a) {
            // TODO Auto-generated constructor stub
            this.server = b;
            this.socket = a;
        }
    
        @Override
        public void run() {
            try {
                OutputStream out = socket.getOutputStream();
                InputStream in = server.getInputStream();
                byte[] buf = new byte[1024];
                while ((in.read(buf)) != -1) {
                    System.out.println("服务端:  " + Arrays.toString(buf));
                    out.write(buf);
                    out.flush();
                    System.out.println("客户端发送成功!");
                }
            } catch (Exception e) {
                System.out.println(server.getInetAddress().getHostName() + "服务端接收异常!" + e);
            }
        }
    
    }
    

    }

    相关文章

      网友评论

          本文标题:TCP转发通讯,模型,大概思路

          本文链接:https://www.haomeiwen.com/subject/arxrqktx.html