【问题标题】:Multiple streams on TcpClient on different ports?不同端口上的 TcpClient 上的多个流?
【发布时间】:2017-12-12 00:41:11
【问题描述】:

我对@9​​87654321@ 类有点困惑。我想连接到我的服务器并有 2 个流。一个 SSL 和一个常规的非安全 TCP。

所以我目前是这样连接的:

await _tcpClient.ConnectAsync(address,port);
IsConnected = true;
_networkStream = _tcpClient.GetStream();
_sslStream = new SslStream(_tcpClient.GetStream());

问题是我想在不同的端口上使用我的 ssl 数据。那么我是否需要有两个 TcpClient 实例,一个用于安全,一个用于非安全?或者我可以在这个类的不同端口上有多个流。我很困惑它是怎么做的?我真的很困惑这是如何正确设置的。

【问题讨论】:

  • 如果你要去同一个服务器,你需要有两个不同端口号的 TcpClient 对象。两个客户端之间是否有任何同步?通常使用 SSL,您有一个用于命令的端口和第二个用于传输数据的端口。为了减少代码量,我会为 Tcp 代码创建一个类并创建该类的两个实例。
  • 是的,我想我会创建一个包含两个 tcp 客户端的类。 :)

标签: c# ssl tcp tcpclient


【解决方案1】:

是的,您需要两个单独的 Socket 实例。您可以通过TcpClient 的两个实例来实现这一点 - 我个人更喜欢原始套接字,但这取决于您。

【讨论】:

  • 使用TcpClientSocket 实例有什么区别?
  • 理论上TcpClient 有助于包装许多东西以帮助您更轻松地使用套接字。但是 API 是一个非常薄的抽象,在大多数情况下,您可以轻松地处理原始套接字,或者最坏的情况是 NetworkStream
  • 啊,我明白了,我想我现在只使用两个 TcpClients,直到我更好地理解套接字的语法用法。整个开始/回调设置与 TcpClient 的异步目前对我来说似乎有点混乱。
  • TcpClient 和 Socket 真的没有什么区别,只是 Tcp Constructor 自动设置了一些属性,隐藏了一些属性/方法。隐藏的属性/方法可以在 TcpClient 客户端属性中找到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2014-12-26
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多