套接字tcp连接

时间:2016-06-24 08:32:17

标签: java android sockets tcp try-catch

我在android studio上开发应用程序。我试图打开套接字连接。

当用户输入正确的IP地址时,一切正常,但如果地址不是正确的IP,则Socket未连接。

但问题是Socket没有抛出catch Exception,应用程序正在运行,现在如果用户输入正确的ip地址,则套接字未连接。

我的问题是,如果IP地址不是正确的IP并且如何使其工作,它为什么不抛出捕获Exception

这是代码

   try {
        sockettcp = new Socket(Address, Port);
    } catch (Exception e) {
        valid = false;
    }

1 个答案:

答案 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

的详情,请参阅javadoc