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

2020-07-02  本文已影响0人  deast

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);
        }
    }

}

}

上一篇下一篇

猜你喜欢

热点阅读