我目前正在开发一个聊天应用程序,这是一个非常基本的整体,但是当我从客户端和服务器端收到字符串时遇到问题。我正在使用一个线程来被动地侦听传入消息的套接字,这是我怀疑问题所在。我是否以正确的方式做这件事?被动地收听聊天应用程序的套接字
来源: 代码发送字符串:
send.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
messageBuffer = message.getText();
out.println(messageBuffer);
chat.append(username + ": " + messageBuffer + "\n");
message.setText("");
}
});
然后我有这个被动地收听(问题很可能是在这里):
public void run(){
while(true){
try {
messageBufferIn = in.readLine();
System.out.println(in.readLine());
chat.append(recipient + ": " + messageBufferIn + "\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
林还要求使用该线程:
public static void startChatting(){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
感谢您提供的任何帮助,我仍然是新的线程所有我的错误可能会相当平庸。
编辑:问题是,当我尝试发送一条消息给接收器,什么都没有通过,我可以确认它们已连接。事实上,System.out.println(in.readLine());完全没有通过,甚至没有“空”输出。
问题是什么......? – user1329572
也许[this](http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html)会帮助.. – user1329572
@ user1329572我已经被告知使用while循环在数据套接字上侦听时是一个坏的CPU堵塞。这是正确的,还是这是唯一的方法? – Andrei0427