我正在读太阳能转换器的一些值。如果太阳能转换器在传输过程中关闭,我的代码就会无休止地运行。
if (ping(ip)){
socket = new Socket(ip, port);
fromServer = socket.getInputStream();
toServer = socket.getOutputStream();
try {
System.out.println("SEND MESSAGE");
toServer.write(message.getBytes(Charset.forName(ANSI_CODE)));
} catch (IOException e) {
e.printStackTrace();
}
message = "";
while((i=fromServer.read())!=-1){
// converts integer to character
if (i == 0){
}else{
message += (char)i;
}
}
System.out.println("MESSAGE RECEIVED");
}如果太阳能转换器正在运行,代码工作得很好,但是如果因为太阳下山而关闭电源,它就会循环运行。它只在控制台上显示这个,不会抛出任何异常。
PING ... OK
SEND MESSAGE我如何创建一种超时?
发布于 2022-01-03 07:07:39
若要在任何套接字上设置超时,可以使用socket.setSoTimeout(MILLISECONDS)作为指定的这里。
这将导致套接字上的任何read()只持续给定的毫秒。注意,在执行阻塞操作之前,必须使用该函数。当时间结束时将抛出一个SocketTimeoutExeception。
https://stackoverflow.com/questions/70562531
复制相似问题