Java 设置连接尝试的最长时间(套接字)
我正在尝试设置连接尝试的最长时间。我已尝试Java 设置连接尝试的最长时间(套接字),java,android,sockets,connection,Java,Android,Sockets,Connection,我正在尝试设置连接尝试的最长时间。我已尝试睡眠(5000),然后如果(!socket.isConnected)。不幸的是,它没有起作用。 我该怎么做 代码: 这是代码。希望对你有帮助 提前感谢当您使用Socket(String,int)创建套接字时,它将自动尝试连接。无法使用该构造函数设置连接超时 相反,请使用空构造函数Socket(),并使用connect方法进行连接。此方法允许您为连接指定超时: InetSocketAddress address = new InetSocketAddre
睡眠(5000)
,然后如果(!socket.isConnected)
。不幸的是,它没有起作用。
我该怎么做
代码:
这是代码。希望对你有帮助
提前感谢当您使用
Socket(String,int)
创建套接字时,它将自动尝试连接。无法使用该构造函数设置连接超时
相反,请使用空构造函数Socket()
,并使用connect
方法进行连接。此方法允许您为连接指定超时:
InetSocketAddress address = new InetSocketAddress("localhost", 15180);
Socket socket = new Socket();
int timeout = 10000;
socket.connect(address, timeout);
如果要对耗时过长的read()调用进行超时,请使用setSOTimeout
使用setSOTimeout
方法请显示您的code@Baldoius不,您将使用参数的主机和端口创建一个新的InetSocketAddress
:socket.connect(新的InetSocketAddress(主机,端口))
我建议将InetSocketAddress
存储在某个地方,以便在需要时可以重复使用。如果查看Socket
构造函数的代码,您会注意到它实际上创建了InetSocketAddress
并调用connect
,因此它执行与我们在这里所做的相同的操作(使用主机和端口创建地址,然后连接)。不知道为什么他们没有一个构造函数,可以让你设置timeout@Baldoius我不知道你指的是什么。这和超时有关吗?@Baldoius我不明白你的问题;你的英语有点差。“我也变成了一个例外”对我来说毫无意义。请更详细地说明您遇到的问题。另外,请在您的应用程序中更新代码question@Baldoius编辑了我的答案
InetSocketAddress address = new InetSocketAddress("localhost", 15180);
Socket socket = new Socket();
int timeout = 10000;
socket.connect(address, timeout);