我一直在寻找面向.Net程序员的简单分步通信教程。 经过一些谷歌查询,我在 net-informations.com 找到了"CSharp Communications"代码集合。只要我到达"如何 C# 聊天服务器"示例,它看起来就相当不错。
作者提出了带有HashTable容器的多线程服务器,以将所有连接保存在服务器端的共享内存中。根据 MSDN 文档,用于广播消息的 TcpClient 和 NetworkStream 类不是线程安全的,而该示例从多个服务器线程使用它们。
我的问题是:
- 你能确认这个例子是错误的吗?
- 应该怎么做,锁定广播方法(将其标记为关键部分)是否足够?
- 你能推荐一些套接字通信教程(.Net首选)吗?
它并不完美,因为我在大约 7 年前写过它,但它涵盖了并会让您很好地理解 TCP 通信领域:
通用 TCP/IP 客户端服务器
根据 MSDN 文档,用于广播消息的 TcpClient 和 NetworkStream 类不是线程安全的,而该示例从多个服务器线程使用它们。
这是正确的;但它是关于并发访问的。如果每个线程依次使用实例(例如,使用锁来控制访问),则可以使用不同的线程。
换句话说:不是线程安全并不意味着绑定到单个线程。