【发布时间】:2021-01-19 04:01:24
【问题描述】:
如果有一些专业知识的人可以在这里指出不同之处:
Dim tClient as New TCPClient
tClient.Connect(xxx, xxx)
..和:
tClient.Client.Connect(xxx,xxx)
不知道用哪个?
【问题讨论】:
-
TcpClient.Connect()调用[Socket].Connect()(所以,TcpClient.Client.Connect(),因为Client是 Socket 对象)经过一些验证,包括创建 Socket 是否为空,验证 IpV6 是否可以使用,如果指定了主机名,则为端点的地址等。 Socket.Connect() 方法完成其余的工作:例如,它检查isListening是否为真,如果是则抛出...... -
您的问题的标题和正文询问的是两件不同的事情。在标题中,您似乎在询问
.Connected属性,而在正文中,您比较了对Connect()方法的两个不同调用。 -
正如 Jimi 所说,如果您查看 source code,
TcpClient.Connect()会为您完成肮脏的工作(因为 TcpClient 是Socket类的包装器),然后 调用.Client.Connect()。如果你想使用后者,你必须自己做所有的脏活;在这种情况下,您不妨直接使用Socket类。 -
关于
Connected属性。TcpClient.Connected只是 returns.Client.Connected所以如果你愿意,你可以使用任何一个,但实际上没有理由使用后者。 -
@ 41686d6564:感谢您注意到 OP 在标题中说“已连接”......然后在他的帖子中询问了“连接”。两个完全不同的东西:)