gpt4 book ai didi

java - 套接字 TCP 连接

转载 作者:行者123 更新时间:2023-12-01 09:46:10 26 4
gpt4 key购买 nike

我正在 android studio 上开发一个应用程序。我正在尝试打开套接字连接。

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

但问题是Socket不会抛出catch Exception,应用程序正在运行,现在如果用户输入正确的IP地址,套接字不会已连接。

我的问题是,如果 IP 地址不是正确的 IP,为什么它不会抛出 catch Exception 以及如何才能使其工作?

这是代码

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

最佳答案

Socket 的正常方式是尝试连接到给定端口上的给定 IP。

如果由于某种原因 IP 不正确,Socket 不会抛出错误,而是会“超时”,尝试每隔一分钟左右重新连接(主线程或 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

要“修复”您的问题,您可以将超时设置为您的值(这不能超过平台默认值)

Socket sck = new Socket();
sck.connect(new InetSocketAddress(ip, port), timeout);

要“检查”您的Socket是否已连接,您可以尝试以下操作:

Socket.isConnected(); //Returns the connection state of the socket.

注意:关闭套接字不会清除其连接状态,这意味着如果关闭套接字,此方法将为关闭的套接字返回 true(请参阅 isClosed())在关闭之前已成功连接。

请参阅javadoc有关Socket的更多信息。

关于java - 套接字 TCP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38008941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com