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