package LinkTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
//103.46.128.49 44661:34713
public class SocketService {
static ServerSocket serverSocket1;//用于连接硬件
static ServerSocket serverSocket2;//用于连接APP
static Socket socket1;//获得硬件socket
static Socket socket2;//获得APP的socket
static BufferedReader reader1;//用于读取硬件发来数据
static BufferedReader reader2;//用于读取APP发来数据
static PrintWriter writer1;//向硬件发送数据
static PrintWriter writer2;//向APP发送数据
public static void main(String[] args) throws IOException {
serverSocket1=new ServerSocket(8090);
serverSocket2=new ServerSocket(8080);
socket1=serverSocket1.accept();
socket2=serverSocket2.accept();
reader1=new BufferedReader(new InputStreamReader(socket1.getInputStream()));
reader2=new BufferedReader(new InputStreamReader(socket2.getInputStream()));
writer1 = new PrintWriter(socket1.getOutputStream());
writer2 = new PrintWriter(socket2.getOutputStream());
System.out.print("建立联接完毕!\n");
//并行线程
Channel channel1 = new Channel(reader1,writer2);//用于硬件向APP发数据
Channel channel2 = new Channel(reader2,writer1);//用于APP向硬件发数据
Thread thread1 = new Thread(channel1);
Thread thread2 = new Thread(channel2);
thread1.start();
thread2.start();
}
}
class Channel implements Runnable{//创建隧道用于一个socket向另一个socket发数据
private BufferedReader reader;
private PrintWriter writer;
private String getStr ;
public Channel(BufferedReader reader0,PrintWriter writer0){
reader = reader0;
writer =writer0;
}
public void run(){
while(true){
try{getStr = reader.readLine();}
catch(Exception e){getStr=null;System.out.println("Error." + e);}
if(getStr!=null){
System.out.println("" + getStr);
for(int cc=0;cc<300;cc++)writer.println(getStr);
}
}
}
}
/*
writer1.close();
reader1.close();
socket1.close();
serverSocket1.close();
*/
/*关于线程的run写法
new Thread(
new Runnable() {
public void run() {
system
}
}
).start();
*/
java 多线程&socket交互
最新推荐文章于 2024-07-05 22:28:16 发布