C# 同步多套接字客户端澄清

C# 同步多套接字客户端澄清,c#,sockets,tcpclient,tcp-ip,C#,Sockets,Tcpclient,Tcp Ip,我将创建多个同步客户端。我需要一些关于下面代码的解释。 当我创建下面这样的套接字并调用connect时,网络级别上正在发生什么 我相信,当我们创建一个套接字和调用连接时,TCP/IP连接是在客户端套接字和服务器套接字之间建立的隧道 一旦此发送方(套接字)连接到服务器,该客户端和服务器之间将有一个唯一的隧道。 如果我创建另一个客户端,它将在它们之间有另一个唯一的隧道 如果出现错误,即客户端未连接,则始终应使用现有套接字(发送方)重新连接,然后我们将访问与之前相同的数据/连接。 我们不应该创建一个新

我将创建多个同步客户端。我需要一些关于下面代码的解释。 当我创建下面这样的套接字并调用connect时,网络级别上正在发生什么

我相信,当我们创建一个套接字和调用连接时,TCP/IP连接是在客户端套接字和服务器套接字之间建立的隧道

一旦此发送方(套接字)连接到服务器,该客户端和服务器之间将有一个唯一的隧道。 如果我创建另一个客户端,它将在它们之间有另一个唯一的隧道

如果出现错误,即客户端未连接,则始终应使用现有套接字(发送方)重新连接,然后我们将访问与之前相同的数据/连接。 我们不应该创建一个新的套接字,然后我们将有一个新的隧道,我们将失去以前的连接和数据

Socket sender = new Socket(AddressFamily.InterNetwork,
                              SocketType.Stream, ProtocolType.Tcp );
sender.Connect(remoteEndpoint)

如果我错了,请澄清。

你所谓的隧道实际上就是连接。断开的连接无法恢复。数据丢失是可以预料的

当您重用现有套接字对象以再次连接时,您正在创建一个新连接。(我)不建议重用套接字对象,因为这会让人困惑


注意,TCP不知道套接字是什么。规范中不包含该词。套接字是操作系统级的东西。

我有几个问题。1.只有当套接字在初始阶段失败时(就在创建套接字对象之后),我们才应该尝试重新连接到套接字。2.我正在创建单独的套接字对象,以便在客户端使用不同的线程来服务不同的请求。然后,服务器如何知道应该将数据发送到哪个客户端。因为所有客户端都有相同的端点。我不明白(1)是什么意思。关于(2):只需保留对适当套接字对象的引用,并在其上发送和接收。还有一个问题,所以我的(2)点是正确的,我应该为每个请求创建新的套接字。我不知道请求对你意味着什么。你说的话我听不懂。你需要想想你的通信接收者知道什么和不知道什么。请忘记我的请求。我同时通过不同的线程调用上述代码。我只是想知道它是否符合我的目的,因为我不想使用锁或其他东西来同步。