我在android studio上开发应用程序。我试图打开套接字连接。
当用户输入正确的IP地址时,一切正常,但如果地址不是正确的IP,则Socket
未连接。
但问题是Socket
没有抛出catch Exception
,应用程序正在运行,现在如果用户输入正确的ip地址,则套接字未连接。
我的问题是,如果IP地址不是正确的IP并且如何使其工作,它为什么不抛出捕获Exception
?
这是代码
try {
sockettcp = new Socket(Address, Port);
} catch (Exception e) {
valid = false;
}
答案 0 :(得分:1)
Socket
的正常方式是它尝试连接到给定端口上的给定IP。
如果出于某种原因,IP不是正确的,Socket
将不会引发错误,而是#34;超时"尝试每分钟左右重新连接(主线程或GUI线程)。
此类构造函数public Socket(String host, int port)
抛出的4个错误是:
IOException //- if an error occurs during the connection
SocketTimeoutException //- if timeout expires before connecting
IllegalBlockingModeException //- if this socket has an associated channel, and the channel is in non-blocking mode
IllegalArgumentException //- if endpoint is null or is a SocketAddress subclass not supported by this socket
To" Fix"您的问题,您可以将超时设置为您的值(这不能超过平台默认值)
Socket sck = new Socket();
sck.connect(new InetSocketAddress(ip, port), timeout);
To" Check"如果您的Socket
已关联,则可以尝试:
Socket.isConnected(); //Returns the connection state of the socket.
注意:关闭套接字并不清除其连接状态,这意味着如果已成功连接,此方法将对已关闭的套接字返回true(请参阅isClosed()
)关闭。
有关Socket
。