gpt4 book ai didi

java - Java:在运行其他进程时从套接字监听

转载 作者:行者123 更新时间:2023-12-03 11:55:09 25 4
gpt4 key购买 nike

我需要两个Java应用程序才能在两台计算机之间进行通信。一个是前端,用于显示信息并接受用户输入,另一个是在 session 结束时将其存储的服务器。该服务器还具有一个界面,用于从系统添加/删除用户。

我已经使每个应用程序都可以独立工作,并且已经将通信设置为可以独立工作。

现在,我必须结合我遇到的一个问题,似乎无法解决这些问题。

通信的“服务器”部分正在while(true)循环中运行,以等待程序包。这使其很难集成到其他应用程序中。

我一直在阅读有关Threads的文章,以为我会“做到”,但是目前的复杂性让我有些困惑,所以我希望这里有人可以帮助我前进。

这是Server类中的代码。

private String[] str = new String[4];
private String sentence;
private InetAddress IPAddress;
private int port;

private byte[] receiveData = new byte[1024];
private byte[] sendData = new byte[1024];

private DatagramSocket serverSocket;

private void listen(int serverPort) {
try {
this.serverSocket = new DatagramSocket(serverPort);

while (true) {
receivePackage();
splitPackage(this.sentence);
sendConfirm();
}

} catch (SocketException ex) {
System.out.println("UDP Port" + serverPort + "is unavailable.");
System.exit(1);
}
}

private void sendConfirm() {
this.sendData= "RECEIVED".getBytes();
DatagramPacket sendPacket = new DatagramPacket(this.sendData, this.sendData.length, this.IPAddress, this.port);
try {
this.serverSocket.send(sendPacket);
}
catch (IOException ex) {
ex.printStackTrace();
}
}

private void receivePackage() {
this.receiveData = new byte[1024];

DatagramPacket receivePacket = new DatagramPacket(this.receiveData, this.receiveData.length);

System.out.println("Waiting for packet...");
try {
this.serverSocket.receive(receivePacket);

this.sentence = new String(receivePacket.getData());

this.IPAddress = receivePacket.getAddress();
this.port = receivePacket.getPort();
}
catch (IOException ex) {
ex.printStackTrace();
}
}

private void splitPackage(String sentence) {
this.str = sentence.split("\\+");
for (String s: this.str) {
System.out.println(s);
}
}

最佳答案

尝试使您的Server类实现Runnable,并将循环放入run()方法(从Runnable重写)。

完成后,您只需要创建服务器,然后以new Thread(yourServerName).start();开头即可

这样,您的服务器将“在后台”运行并监听输入的通信,从而使您可以同时运行其他进程。

关于java - Java:在运行其他进程时从套接字监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com