3

我一直在为 .Net 程序员寻找简单的分步通信教程。经过一些 Google 查询,我在 net-informations.com 上找到了“CSharp Communications”代码集合。只要我到达“如何使用 C# 聊天服务器”示例,它看起来就相当不错。

作者提出了带有 HashTable 容器的多线程服务器,以将所有连接保持在服务器端的共享内存中。根据 MSDN 文档,用于广播消息的 TcpClientNetworkStream类不是线程安全的,而示例从多个服务器线程中使用它们。

我的问题是:

  1. 你能确认这个例子是错误的吗?
  2. 应该怎么做,锁定广播方法是否足够(标记为临界区)?
  3. 你能推荐一些套接字通信教程(.Net 首选)吗?
4

2 回答 2

5

它并不像我差不多 7 年前写的那样完美,但它涵盖了并将让您对 TCP 通信领域有很好的理解:

通用 TCP/IP 客户端服务器

于 2012-05-14T09:42:03.150 回答
1

根据 MSDN 文档,用于广播消息的 TcpClient 和 NetworkStream 类不是线程安全的,而示例从多个服务器线程中使用它们。

这是对的; 但它是关于并发访问的。如果每个线程依次使用实例(例如,使用锁来控制访问),那么可以使用不同的线程。

换句话说:不是线程安全的并不意味着绑定到单个线程。

于 2012-05-14T09:42:20.740 回答