如何在客户端套接字连接上设置超时?
问题描述:
我想在java中设置客户端套接字上的连接超时。我已将默认连接超时设置为2000,即:如何在客户端套接字连接上设置超时?
this.socket.connect(this.socketAdd, timeOut);
这我正在尝试一个Web应用程序。当用户发出请求时,我将值传递给套接字服务器,但如果在5秒内没有收到任何响应,套接字应该断开连接。但在我的情况下,整个请求再次提交。任何人都可以告诉我我哪里错了?
我想削减套接字连接,如果我在5秒内没有得到任何回应。我该如何设置它?任何示例代码都会有帮助。
答
显示的是连接超时,如果在特定时间内无法连接,则超时。
你的问题意味着你想要一个超时时间,当你已经连接并发送一个请求,你想超时如果在一定的时间内没有响应。
假设你的意思是后者,那么你需要超时socket.read()
,这可以通过SO_TIMEOUT
和Socket.setSoTimeout(int timeout)方法来完成。如果读取时间超过了指定的毫秒数,这将引发异常。例如:
this.socket.setSoTimeout(timeOut);
的另一种方法是做读取在一个线程,然后等待一个超时的线程上,并关闭套接字,如果它timesout。
答
你甚至可以尝试:
Socket client=new Socket();
client.connect(new InetSocketAddress(hostip,port_num),connection_time_out);
答
为了把整个事情:
Socket socket = new Socket();
// This limits the time allowed to establish a connection in the case
// that the connection is refused or server doesn't exist.
socket.connect(new InetSocketAddress(host, port), timeout);
// This stops the request from dragging on after connection succeeds.
socket.setSoTimeout(timeout);
这帮助我超时,当服务器不存在,或拒绝连接。 – anisbet 2013-06-06 16:00:44
btw,'connection_time_out'是以毫秒为单位 – lightswitch05 2017-11-08 15:50:55