如何实现数据转发的server

Manboy 2000-04-17 08:40:00
最近要作一个NT下用VC实现的数据转发的程序,
具体是做一个server,
会有较多的用户长时间的联在server上,
要作的就是把这个用户发来的数据转发向
另外一个用户。即用户间的数据转发。

我觉得可能会很像一个proxy,不同的是
联在这个server的client不是作完一操作就把相应socket删除,
而是需要一直留着。

我想在每个client和server间建立两个socket,(分别用于上下传)
我想在nt下应该是用多线程实现,但不知开一百多个线程,且都阻塞
在receive()或sent()情况会怎么样,
或者用window的消息响应,如onconnect,ontranslate(不用阻塞模式)
这样又怎么样呢?

我不知这些想法是否正确,
是不是有更有效,更可靠,更简洁的实现办法,
请高手们不吝指教。
...全文
159 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Manboy 2000-04-22
  • 打赏
  • 举报
回复
先说说我的想法:用同步多线程,
因为客户随时可能有新信息需发送,而不影响接收其他客户给它的信息,所以我想在每个客户和server间建两个socket(一个用于上一个用于下).
在server端维护一张用户表,当接收到数据时,先判断是给谁的,然后找出相应socket,然后根据该socket现在是否在发送数据决定是开一个线程还是把要发送的数据加到该socket的需发送数据的buffer中.
我这样的实现可以吗?有更加恰当的做法吗?希望您能具体的说一说.谢谢.
telan 2000-04-21
  • 打赏
  • 举报
回复
用多线程和阻塞模式是最简单的实现,对于NT来说,100多个线程应该没有任何问题,
太多可能是不行的。

使用异步模式当然也可以,而且对于你的这种情况,由于不是STOP-WAIT模式,使用异步方式也是非常合适的选择,只不过异步方式你控制起来稍微复杂一些。
Sniper 2000-04-20
  • 打赏
  • 举报
回复
你所说的转送是1vs1的还是1vsN或是Nvs1的?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧