gpt4 book ai didi

c++ - 连接c++服务器时,flash socket发送错误数据

转载 作者:行者123 更新时间:2023-11-28 08:33:48 25 4
gpt4 key购买 nike

我用 c++ 写了一个聊天服务器,用 flex3 写了一个 flash 客户端。
他们之间交换的消息就像 [message_len+messagebody]
在我的所有者 windows xp 系统上打开闪光灯,它工作正常,发送和接收的消息是正确的。
但是当我把 flash 放在 red hat 5 的 apache 服务器上,尝试在 web 浏览器中打开它时,flash socket 发送错误消息,消息无法被识别。
一开始,我想可能是endian不一样,一开始,我用的是littlendian。所以,我尝试了 bigendian,但这次它甚至在本地 xp 系统上也不起作用。从 c++ 服务器上,这次我可以看到本地和远程闪存,它有相同的数据,但与发送的闪存不一样,我认为这是因为 bigendian。

所以情况是这样的:我使用 littleendian,flash 客户端在本地 xp 系统(即 7 explorer)上运行良好。但是如果我把它放在 red hat 5 的 apache 服务器上就不行了。我也尝试了 ror 的 mongrel 服务器,它的工作方式相同....如果我从网络浏览器保存 flash,我发现文件大小与本地 flash 文件大小不相等;

如果我使用 bigendian,Flash 客户端在本地或远程都无法正常工作...原因应该是 bigendian 不适用于 radhat5。

所以,有人可以帮助我吗?非常感谢。

最佳答案

这完全取决于您如何从套接字读取消息长度。如果不是小端/大端问题,可能服务器是 64 位系统,您尝试从套接字读取 64 位(=8 字节)作为消息长度,而您的 32 位系统上的闪存只是发送 32 位(=4 字节)?那会导致困惑...

服务器是否读取了非常大的消息长度 (>5.000.000.000)?这将暗示一个 64 位数字。如果服务器读取的消息长度较小,但仍然太大(如 1.000.000.000 或 1.000.000),则可能是字节序问题。如果邮件大小大约正确,则问题是由于其他原因...

关于c++ - 连接c++服务器时,flash socket发送错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/637527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com