我正在尝试在客户端应用程序中打开TCP套接字,以便它可以与我的服务器通信 在阅读完文档之后,我对socket构造函数感到好奇,它接受了两个参数。
Socket(InetAddress dstAddress, int dstPort)
Creates a new streaming socket connected to the target host specified by the parameters dstAddress and dstPort.
及其描述如上。据我所知,在创建套接字后,我应该明确调用connect函数,以便连接到服务器。但是在我在网上发现的一些TCP客户端示例代码中,没有一个实际调用连接函数
connect(SocketAddress remoteAddr, int timeout)
所以我在想如果构造函数在创建后自动连接到服务器?三方握手完成了。或者我必须在构造函数后显式调用connect函数?非常感谢你
答案 0 :(得分:1)
只有两个不带任何目标的构造函数不能连接:
Socket()
创建一个新的未连接套接字。
Socket(Proxy)
使用给定的代理类型创建新的未连接套接字。
您将目标作为主机名或地址传递的所有其他构造函数:
Socket(String, int)
创建一个新的流式套接字已连接到由参数dstName和dstPort指定的目标主机。
Socket(String, int, InetAddress, int)
创建一个新的流式套接字已连接到由参数dstName和dstPort指定的目标主机。
Socket(InetAddress, int)
创建一个新的流式套接字已连接到由参数dstAddress和dstPort指定的目标主机。
Socket(InetAddress, int, InetAddress, int)
创建一个新的流式套接字已连接到由参数dstAddress和dstPort指定的目标主机。
我遗漏了两个弃用的构造函数。
答案 1 :(得分:0)
套接字构造函数根据文档工作,有些也做连接,其他没有。 请参阅: http://download.oracle.com/javase/6/docs/api/java/net/Socket.html
握手自动完成,您无需照顾它。