Flash 和 AIR 中的套接字编程......两个客户端,一个服务器。监听两个端口还是一个?

Posted

技术标签:

【中文标题】Flash 和 AIR 中的套接字编程......两个客户端,一个服务器。监听两个端口还是一个?【英文标题】:Socket programming in Flash and AIR...two clients, one server. Listen on two ports or one? 【发布时间】:2012-02-04 22:07:40 【问题描述】:

我有一台服务器将从两个客户端获取信息。这 3 台机器位于同一个本地网络上(连接到同一个集线器)。两个客户端都会不断地向服务器发送 x,y 信息。

我正在尝试找出哪种方法更好:

方法 A

服务器监听一个端口。客户端连接到同一个端口。我会尝试通过将客户端信息编码到数据中来区分数据。

方法 B

服务器监听两个端口。客户端 A 始终连接到第一个端口,客户端 B 始终连接到第二个端口。我会根据端口知道谁发送了什么。

【问题讨论】:

只需一个端口即可。您可以从此链接参考:***.com/questions/8383977/… 【参考方案1】:

使用一个端口。当客户端连接时,它会获得自己的 Socket 实例,因此您始终知道从什么客户端接收数据。如果您有 2 个不同的客户端角色,请在连接客户端时使用一些简单的授权,例如“嘿!我是角色 A 的客户端!”。

【讨论】:

【参考方案2】:

方法 A:当客户端连接到套接字服务器时,让服务器返回一个 id 并递增它,因此两个客户端都有 id。然后,当您发送数据(x 和 y)时,同时发送 id。

【讨论】:

我同意方法 A 优于 B,但不需要客户端 ID。根据 valyard 的回答,服务器上通常有单独的套接字实例在同一端口上通信。这是由底层套接字系统管理的(请记住,客户端已经拥有唯一的 IP 来区分它们)。仅当您处理的连接太多以至于单个端口无法管理所有连接时,才应考虑方法 B。 ~64K 减去保留的端口。

以上是关于Flash 和 AIR 中的套接字编程......两个客户端,一个服务器。监听两个端口还是一个?的主要内容,如果未能解决你的问题,请参考以下文章

在 Adob​​e Flash 中的 Android 版 Air 上触摸滚动

iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?

有没有办法从Adobe Air(flash)android应用更新到Unity3d应用,并保留共享对象中的本地保存?

Flash访问本机代码

Flash 10 + AS 2.0中Adobe AIR和Zinc的良好替代品

将 Adob​​e Air 3.3 SDK 与 Flash Builder 一起使用