我正在用 C# .Net 在服务器和客户端之间编写一个聊天程序。除了聊天之外,两个用户都可以参与不同的活动,例如远程桌面和一起玩游戏。
我有几个问题:
多个线程将同时从客户端发送和接收内容,这意味着每个选项都需要识别哪个数据包是给他的并从中获取数据?(在传输文件的同时运行远程桌面,远程桌面线程会看到文件包到达流但应该忽略它,对吗?)
为我将接受客户端的套接字设置的良好缓冲区大小是多少?
我是以包含数据的专用类的形式进行通信,还是尝试将通信保持为我通过流发送的字节数组?
我正在用 C# .Net 在服务器和客户端之间编写一个聊天程序。除了聊天之外,两个用户都可以参与不同的活动,例如远程桌面和一起玩游戏。
我有几个问题:
多个线程将同时从客户端发送和接收内容,这意味着每个选项都需要识别哪个数据包是给他的并从中获取数据?(在传输文件的同时运行远程桌面,远程桌面线程会看到文件包到达流但应该忽略它,对吗?)
为我将接受客户端的套接字设置的良好缓冲区大小是多少?
我是以包含数据的专用类的形式进行通信,还是尝试将通信保持为我通过流发送的字节数组?
我们无法回答问题 2 和 3,因为我们不知道沟通和需求是什么样的。
至于处理多个线程:这很难正确,我会使用现有的解决方案。
我建议你看看0MQ,因为它可能会阻止你重新发明轮子。
有可用的 .NET 客户端库:http ://nzmq.codeplex.com/ 和一个 nuget 包http://www.nuget.org/packages/clrzmq/2.2.5。
一个好的开始是指南
有关快速示例,请参阅此 C# 服务器及其C#中的 hello world 客户端