Delphi TCP Socket Server - 一次广播/回复多个客户端

时间:2012-03-16 15:59:24

标签: delphi sockets tcp real-time broadcast

最近我开始开发简单的flash(flash仅限于tcp)实时多人游戏,我需要一台服务器来提供客户端之间的通信。为此我决定使用Delphi XE + Indy,但我发现Indy提供了同步通信模型。 (我从未使用任何Indy组件。)

到目前为止我所理解的是同步(阻塞)模型限制了并发性,因此使得Indy TCP服务器组件不适合实时多人游戏。

我的问题是:我应该使用非阻塞通信以及实现它的最佳工具(组件,类等)是什么?

如果您向我提供使用此工具广播消息的示例(源代码),我将非常高兴。 - 我想立即向特定“房间”的每个成员发送相同的消息(但不要将消息发送给其他房间的成员。)

PS 抱歉我的英语很差(我不会说它本地):))

提前致谢。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

你误解了Indy是如何运作的。是的,它确实使用阻塞套接字,但这并不意味着它不能异步使用。 TIdTCPServer组件是多线程的。它并行处理多个客户端连接。当然可以将消息从一个客户端发送到另一个客户端,并将消息广播到多个客户端。我之前在StackOverflow,Embarcadero forumsIndy forum上多次发布了这样的示例。下次,请在提问之前做一点研究。

答案 1 :(得分:1)

0MQ应该适合您的需要。 0MQ实现PGM多播并允许请求 - 回复,发布 - 订阅,管道和排除对core patterns。不幸的是它没有当前的pascal / delphi绑定。您可以在0MQ guide

中找到许多(非pascal)示例