问题描述
我编写了这样的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 (将#修改为@)