gpt4 book ai didi

Java TCP 监听器循环

转载 作者:可可西里 更新时间:2023-11-01 02:49:24 26 4
gpt4 key购买 nike

我已经在谷歌上搜索了几个小时,因为我知道这是我面临的一个非常简单的问题,但我找不到解决我的问题的简单方法。

我正在编写一个非常基本的 IRC 客户端,只是为了重新学习 Java,因为我已经有很长时间没有编写任何代码了,而且我有一个我想稍后做的项目。

虽然我卡在套接字监听器上,但如果需要我可以提供代码,但我真正需要的只是一个关于如何创建一个循环来监听和已经创建的套接字并在它完成后立即执行操作的简单教程接收任何数据。这个循环应该一直持续到套接字关闭(用户与服务器断开连接)

我当前代码的问题是监听器似乎挂起整个程序,直到它接收到数据。我什至在一个单独的线程中放置了一个 while 循环,这样它可以挂起该线程直到数据到达,但它仍然挂起整个程序。

我不想被告知答案,我想知道如何找到答案。我什至考虑过创建一个事件驱动的监听器,但这对于我需要的东西来说似乎过于复杂。

我希望不必发布代码,因为在我为尝试让它工作而进行的所有编辑之后它变得一团糟,但这是我目前所拥有的:

ListenToServer.java:

class ListenToServer extends Thread{

JTextPane outputDestination = null;
Socket establishedSocket = null;

public void kickStartprep(Socket establishedSocket, JTextPane outputDestination){
this.establishedSocket = establishedSocket;
this.outputDestination = outputDestination;
}


@Override
public void run(){

UpdateServerStatusWindow("Thread is running!", outputDestination);


BufferedReader inFromServer = null;

try{
inFromServer = new BufferedReader(new InputStreamReader(establishedSocket.getInputStream()));

while (inFromServer.readLine().isEmpty() == false){
UpdateServerStatusWindow(inFromServer.readLine(), outputDestination);
}


}
catch (Exception e){
UpdateServerStatusWindow(e.toString(), outputDestination);
}
}


public void UpdateServerStatusWindow(String message, JTextPane destination){

StyledDocument doc = destination.getStyledDocument();
try
{
doc.insertString(doc.getLength(), '\n' + message, null);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "There was an error updating the server message output window in the TCP Listner!");
JOptionPane.showMessageDialog(null, e);

}

}
}

然后我这样调用:

主界面.java

 ListenToServer serverListener = new ListenToServer();
serverListener.kickStartprep(establishedConnection, ServerMessageOutput);
serverListener.run();

最佳答案

一位 friend 查看了这段代码,发现问题出在我调用线程的方式上。基本上我需要打电话:

serverListener.start();

代替

serverListener.run();

这已经解决了问题,我的 IRC 客户端现在可以正确连接到服务器。

关于Java TCP 监听器循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596489/

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