Java从其他类连接到TCP Server套接字

问题描述

我编写了这样的TCP服务器类:

public class ServerAzyklisch implements Runnable,JavaDelegate {
    private ServerSocket ssocket;
    String param;
    HexToByteConverter hexToByteConverter = new HexToByteConverter();
    // 2 TCP Server starten Port 2000,Port 2001
    public ServerAzyklisch(String Pparam) throws IOException {
        ssocket = new ServerSocket(2000);
        param = Pparam;
    }

    public void run() {
        System.out.println(param+"Paraaam");
        InputStream in;
        OutputStream out = null;
        Socket socket;
        //Thread immer aktiv
        while(true){
            try {
                // Wartet auf Socket Verbindung
                System.out.println("Server is listening on port "+ ssocket.getLocalPort());
                socket = ssocket.accept();
                socket.setSoLinger(true,1000);
                System.out.println("Sockeport: "+socket.getLocalPort());
                //Inputstream
                in = socket.getInputStream();
                //Outputstream
                out = socket.getoutputStream();
                //Datenpuffer deklarieren (anlegen)
                byte []data = new byte[132];
                int numBytes = 0;
                byte[]durch = hexToByteConverter.hexStringToByteArray("333333330041006400040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
                byte[]durchlauf = hexToByteConverter.hexStringToByteArray("333333330041006400040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
                //Pressen Hexdump 6e=110 6f =111 wie in Excel Analyzer //funzt
                byte[]Pressen1hexdump111 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c78900010000006f0000000000000000000000000001000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"+param);
                byte[]Pressen1hexdump110 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c78900010000006e0000000000000000000000000001000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"+param);
                byte[]Pressen2hexdump = hexToByteConverter.hexStringToByteArray("3333333300400065000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
                byte[]Pressen3hexdump = hexToByteConverter.hexStringToByteArray("3333333300400065001400000000003d01c9c7890001000000c9000000000000000000000000000100000000001e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
                ///////////////Bohrer funzt
                byte[]Bohrer1hexdump120 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c78900010000007800000000000000000000000000010000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002");
                byte[]Bohrer2hexdump121 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c78900010000007800000000000000000000000000010000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001");
                byte[]Bohrer3hexdump122 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c78900010000007800000000000000000000000000010000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003");
                ///////////////Magazin c8 = 200 + param 0 am ende
                byte[]Magazin200hexdump0 = hexToByteConverter.hexStringToByteArray("33333333003d0064000600000004004001c9c7890001000000c800000000000000000000000000010000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");

                byte[]Pressen3hexdumpNextBohrer = hexToByteConverter.hexStringToByteArray("3333333300400065001400000000003f01c9c789000100000078000000000000000000000000000100000000001e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002");
                //nach 30. Zahl,der 31. ist Ressource ID 3f = 63 Bohrer
                byte[]Pressen4hexdumpNextRSCIDBohrer = hexToByteConverter.hexStringToByteArray("33333333003f0065001400000000003d01c9c78900010000007a000000000000000000000000000100000000001e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
                while((numBytes = in.read(data)) != -1){
                    System.out.println(Arrays.toString(data));
                    out.write(Magazin200hexdump0);
                    out.write(Pressen2hexdump);
                    out.write(Pressen3hexdump);
                    }
            
            } catch (SocketException e) {
                e.printstacktrace();
            } catch (IOException e) {
                e.printstacktrace();
            }
        }
    }
}

我可以在其中读写与计算机(TCP客户端)和TCP Server的vom套接字连接。 我是这样在线程的另一个类/方法中启动的:

@Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        Runnable serverZyklisch = new ServerZyklisch();
        Runnable serverAzyklisch = new ServerAzyklisch((String) delegateExecution.getvariable("param"));
        Thread t1 = new Thread(serverZyklisch);
        t1.start();
        Thread t2 = new Thread(serverAzyklisch);
        t2.start();
        String val1 = (String) delegateExecution.getvariable("param");
        int valueParam = Integer.parseInt(val1);
    }

现在我的问题是,如何实现将TCP连接用作另一个类,以便可以在另一个Class + Method中编写和读取TCP流?这有可能吗?启动TCP Server应该是独立的,然后我想使用其他类来发送和接收我的TCP流(ByteArrays)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)