c# - 同步多套接字客户端说明

标签 c# sockets tcpclient tcp

我要创建多个同步客户端。我需要一些关于下面代码的解释。 当我创建如下所示的套接字并调用连接时,网络级别发生了什么。

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

一旦这个发送方(套接字)与服务器连接,客户端和服务器之间就会有一个唯一的隧道。 如果我创建另一个客户端,它们之间将有另一个独特的隧道。

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

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

如果我错了,请澄清。

最佳答案

你所说的隧道,其实就是所谓的连接。断开的连接无法恢复。数据丢失是意料之中的。

当您重用现有的套接字对象再次连接时,您正在创建一个新连接。 (我)不推荐重用套接字对象,因为它会造成混淆。

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

关于c# - 同步多套接字客户端说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700603/

相关文章:

C# .DLL 库 - 控制台和窗体 Windows 应用程序的最佳实践

python - 与 NodeJS 的 TCP/IP 通信以获取多个写入消息

c++ - 使用 c++ 套接字 - 使用 accept() 和文件描述符时会出现严重错误

c# - 如何正确使用 TcpClient ReadTimeout

c# - 暂时锁定端口以供测试

c# - 可靠地重新连接到服务器 TCPClient C#

c# - 表中列值的总和 - Rdlc 报告

c# - System.Linq.GroupBy 键未在 silverlight 中绑定(bind)

c# - 使用 C# 访问网络文件共享

sockets - 未接受的连接会怎样?