[英]How to set timeout on client socket connection?
我试图在java中设置客户端套接字上的连接超时。 我已将默认连接超时设置为2000,即:
this.socket.connect(this.socketAdd, timeOut);
我正在尝试一个Web应用程序。 当用户发出请求时,我将值传递给套接字服务器,但如果我在5秒内没有收到任何响应,则套接字应该断开连接。 但在我的情况下,整个请求再次提交。 任何人都可以告诉我哪里出错了?
如果我在5秒内没有得到任何响应,我想切断套接字连接。 我怎么设置它? 任何示例代码都会有帮助。
你甚至可以尝试:
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);
您显示的是连接超时,如果在一定时间内无法连接,则会超时。
您的问题意味着您希望在已经连接并发送请求时超时,如果在一定时间内没有响应,您希望超时。
假设你的意思是后者,那么你需要超时socket.read()
,这可以通过使用Socket.setSoTimeout(int timeout)方法设置SO_TIMEOUT
来完成。 如果读取的时间超过指定的毫秒数,则会抛出异常。 例如:
this.socket.setSoTimeout(timeOut);
另一种方法是在线程中执行读取,然后在超时时等待线程,并在超时时关闭套接字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.