我正在尝试使用服务器套接字在客户端和服务器之间建立连接。我也不用java.nio
。
问题是我不断的发送一条测试消息,并检测是否发送成功(客户端仍然连接),如果没有,则客户端断开连接。
此处显示:
try
{
Scanner in = new Scanner(socket.getInputStream());
BufferedReader in_2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(stopThread)
{
if(in_2.ready())
{
String message = in_2.readLine();
dt = new DateTime();
PrintStream out = new PrintStream(socket.getOutputStream());
server.detect(message, dataSets, out);
dataSets.add(message);
GUI.textArea_1.append(message + "\r\n");
GUI.textArea_1.setCaretPosition(GUI.textArea_1.getDocument().getLength());
}
else
{
PrintStream out = new PrintStream(socket.getOutputStream());
out.println("Testing Connection \r\n");
if(out.checkError())
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
stopThread = false;
GUI.textArea.append(userName + " disconnected \r\n");
GUI.textArea.setCaretPosition(GUI.textArea.getDocument().getLength());
server.inputDataForm(userName, dt, dataSets);
}
Thread.sleep(3000);
}
}
问题是Thread.sleep(3000)
实际上干扰了获取数据,因为 3 秒后,我将获得大量数据(因为我停止了线程 3 秒)。
现在,我提出的是 else 语句中的匿名类。
class runThread implements runnable
{
void run()
{
//Put the else statement here
}
}
但是 stopThread = false 不是我试图控制的常数。
我搜索过的其他线程只将变量放在匿名类的 main 中,但如果客户端断开连接,我需要 stopThread 来停止 while 循环。
有人有想法吗?
谢谢!