gpt4 book ai didi

java - 如何在java中正确实现端口监听器作为服务?

转载 作者:行者123 更新时间:2023-12-01 04:50:23 26 4
gpt4 key购买 nike

我正在尝试将端口监听器实现为一项服务,在获取带有数据的字符串后,该服务将执行插入数据库的操作。我希望它永远在服务器上运行。

因此,在使用 Java Service Wrapper 之前,我想问一下我是否包装了正确的代码,所以这是我的代码,我愿意倾听其他人如何解决同样的问题。

现在我遇到一个问题,第一次发送数据时它工作正常,但从第二次开始就没有任何作用,希望你能帮助我。

public class PortToDB {
public static void main(String[] args) throws IOException {

ServerSocket serverSocket = null;
DBHandler handler = new DBHandler();
try{
serverSocket = new ServerSocket(50000);

} catch (IOException e){
System.err.println("Could not listen on port: 50000. Error: " + e);
System.exit(1);
}

Socket clientSocket = null;
try{
clientSocket = serverSocket.accept();
} catch(IOException e){
System.err.println("Accept failed. " + e);
System.exit(1);
}

//PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;

while(true){
while ((inputLine = in.readLine()) != null) {
//out.println(inputLine);
handler.dbInsert(inputLine);
}
}
}
}

最佳答案

通常,这可以通过线程池来完成,并且 .accept() 方法将在循环中将与新套接字的交互处理到该池中的线程。按照上面的编码方式,它只会接受一个连接,当该连接关闭时,您的 main 方法将退出。

顺便说一句,大多数人会使用现有的协议(protocol),而不是发明自己的协议(protocol)。通过 HTTP 使用 REST 风格的服务是一种更容易被接受的方法。

关于java - 如何在java中正确实现端口监听器作为服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097574/

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