java 多线程&socket交互

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();
*/

猜你喜欢

转载自blog.csdn.net/jzlStudent/article/details/103773017