我正在使用两个使用套接字进行通信的java进程。java套接字连接阻塞进程
从服务器端,我使用它来发送信息:这里
public void send(Serializable order)
{
try
{
if (this.clientSocket != null && this.clientSocket.isBound() && this.clientSocket.isConnected())
{
String json = "";
json = mapper.writeValueAsString(order);
log.info("sending to client : " + order.getClass());
json = convertToUTF8(json);
this.output.write(json + "\n");
this.output.flush();
log.info("Message sent to client");
}
else
{
log.info("no client connected");
}
}
catch (Exception e)
{
log.fatal("Exception while trying to send message to client : " + e.getMessage(), e);
}
}
输出为:
private BufferedWriter output;
而在客户端,我试着像读取数据:
while (this.running)
{
try
{
String msg = in.readLine();
log.debug("MSG VALUE IS : |"+msg+"|\n\n**********\n");
if ("".equalsIgnoreCase(msg) || msg == null)
{
break;
}
这里是:
private BufferedReader in;
这里的问题是一段时间后,服务器进程受阻,ANS如果我运行netstat命令,我可以看到的recv-Q和发送-Q值不为0
但我不能再现自己的情况,所以我不知道是什么产生这种情况,是否有办法处理这种情况,还是必须改变阅读数据的方式?
在此先感谢。
我觉得这不是我只有一个客户端允许的时间,所以我的ServerSocket和插座都在同一个线程线程相关的问题,它可以连续运行在堆栈之前的几天,我不知道如何检查什么是错误的,因为我没有例外,无论是在服务器端还是在客户端,一切都卡住了,直到我杀死了一个进程(并根据netstat的连接仍然建立) – Sylvain