相关疑难解决方法(0)

如何编写可扩展的基于Tcp/Ip的服务器

我正处于编写新的Windows服务应用程序的设计阶段,该应用程序接受长连接的TCP/IP连接(即,这不像HTTP,其中有许多短连接,而是客户端连接并保持连接数小时或数天或甚至几周).

我正在寻找设计网络架构的最佳方法的想法.我将需要为该服务启动至少一个线程.我正在考虑使用Asynch API(BeginRecieve等),因为我不知道在任何给定时间(可能是数百个)我将连接多少客户端.我绝对不想为每个连接启动一个线程.

数据将主要从我的服务器流向客户端,但有时会从客户端发送一些命令.这主要是一个监控应用程序,我的服务器定期向客户端发送状态数据.

有关尽可能扩展的最佳方法的任何建议吗?基本工作流程 谢谢.

编辑:要明确,我正在寻找基于.net的解决方案(如果可能,C#,但任何.net语言都可以)

BOUNTY注意:要获得赏金,我希望不仅仅是一个简单的答案.我需要一个解决方案的工作示例,作为指向我可以下载的内容的指针或在线的简短示例.它必须是基于.net和Windows(任何.net语言都可以接受)

编辑:我要感谢所有给出好答案的人.不幸的是,我只能接受一个,我选择接受更为人熟知的Begin/End方法.Esac的解决方案可能会更好,但它仍然足够新,我不确定它将如何运作.

我已经提出了我认为很好的所有答案,我希望我能为你们做更多的事情.再次感谢.

.net c# networking tcp scalability

148
推荐指数
8
解决办法
7万
查看次数

关于服务器插座编程模型的问题

在过去的几个月里,我一直在研究C++和Java中的套接字服务器的一些实现.我用Java编写了一个小型服务器来处理和处理来自网站上托管的Flash应用程序的输入,我成功地编写了一个服务器,用于处理来自具有C++多个播放器的2D游戏客户端的输入.我在一个项目中使用TCP,在另一个项目中使用UDP.现在,我确实有一些我在网上找不到的问题,我希望有些专家可以帮助我.:)

假设我想在C++中构建一个服务器来处理来自数千个独立和/或Web应用程序的输入,那么我应该如何设计我的服务器呢?到目前为止,我通常会为每个连接的用户创建一个新的唯一线程,但我怀疑这是要走的路.

另外,如何确定通过网络发送的数据包的布局; 数据通常是通过网络以二进制或文本状态发送的吗?当您将数据发送到不同的媒体(例如C++服务器到闪存应用程序)时,如何处理序列化对象?

最后,是否有任何易于使用的库,它通常用于支持可移植性(例如在Windows机器上开发和在Linux机器上部署)而不是boost asio.

谢谢.

c++ sockets

10
推荐指数
2
解决办法
5277
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

networking ×1

scalability ×1

sockets ×1

tcp ×1