我想禁用由套接字超时产生的一条错误消息,因为它正在填充我的控制台(Linux、终端)。
编码:
public ThreadListenResponseQuery(DatagramSocket socket){
this.socket = socket;
try {
socket.setSoTimeout(1500);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run(){
System.out.println("Waiting for response...");
// Waiting for 60 seconds...
while(System.currentTimeMillis() < startTime + 60000){
socket.receive(receive_packet);
// .. Additional work
}
}
该程序正在等待 60 秒以得到任何响应。我在套接字上设置了超时,因为while
如果没有响应消息到来,循环就会冻结。
错误:
java.net.SocketTimeoutException:在 java.net.AbstractPlainDatagramSocketImpl.receive(Unknown Source) 在 java.net.DualStackPlainDatagramSocketImpl.receive0(Unknown Source) 的 java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method) 接收超时。 java.lang.Thread.run(未知源)处 thread.ThreadListenResponseQuery.run(ThreadListenResponseQuery.java:46)处的 DatagramSocket.receive(未知源)