Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置连接尝试的最长时间(套接字)_Java_Android_Sockets_Connection - Fatal编程技术网

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);