Socket类文档是here。
在我的代码atm中,我使用了类似这样的构造函数:
Socket m_Socket = new Socket(m_Address, m_Port);
m_Address
是一个InetAddress,m_Port
是一个int。
当此行运行且无法创建套接字时,应用程序会在抛出IOException之前等待3秒左右。
我可以看到没有构造函数同时将InetAddress
,int
,和另外int
用于超时。我需要等待250毫秒而不是现在的约3秒。这意味着我需要在套接字上设置超时,但我找不到任何方法来执行此操作。我知道我们有方法setSoTimeout(timeout)
,但需要在Socket
类的实例上调用它。我可以通过这样做来实例化一个新的Socket:m_Socket = new Socket();
,但是我需要设置InetAddress和端口,而Socket类似乎没有任何方法来执行此操作(构造函数除外)。
如何在实际尝试设置套接字之前设置超时?
答案 0 :(得分:2)
您可以使用默认构造函数创建一个未连接的Socket,然后使用timeout调用connect()。
Socket m_Socket = new Socket();
m_Socket.connect(addr,1000);
答案 1 :(得分:2)
尝试
Socket sock = new Socket();
sock.connect(new InetSocketAddress(m_Address, m_Port), 250);