3 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用Socket()構(gòu)造函數(shù)和connect(SocketAddress endpoint, int timeout)方法代替。
在您的情況下,它將類似于:
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ipAddress, port), 1000);
引用文檔
connect
public void connect(SocketAddress endpoint, int timeout) throws IOException
使用指定的超時(shí)值將此套接字連接到服務(wù)器。零超時(shí)被解釋為無(wú)限超時(shí)。然后,連接將被阻塞,直到建立或發(fā)生錯(cuò)誤。
參數(shù):
endpoint-SocketAddress-
timeout要使用的超時(shí)值,以毫秒為單位。
拋出:
IOException-如果在連接過(guò)程中發(fā)生錯(cuò)誤
SocketTimeoutException-如果超時(shí)在連接之前到期
IllegalBlockingModeException-如果此套接字具有關(guān)聯(lián)的通道,并且該通道處于非阻塞模式
IllegalArgumentException-如果端點(diǎn)為null或此套接字不支持SocketAddress子類
從:1.4

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
由于無(wú)法控制超時(shí)UnknownHostException。這些是DNS時(shí)間。您只能在給定有效主機(jī)的情況下控制連接超時(shí)。前面的答案都不能正確解決這一點(diǎn)。
但是我很難相信UnknownHostException當(dāng)您指定IP地址而不是主機(jī)名時(shí),您確實(shí)會(huì)獲得一個(gè)。
編輯要控制Java的DNS超時(shí),請(qǐng)參閱此答案。
添加回答
舉報(bào)