0

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

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

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

那么,有人可以帮助我吗?多谢。

4

1 回答 1

1

It all depends on how you read the message length from the socket. If it's not a little/big endian issue, maybe the server is a 64-bit system and you try to read 64-bit (=8 byte) from the socket as the message length, while your flash on your 32-bit system just sends 32 bit (=4 byte)? That would lead to confusion...

Does the server read a crazily large message length (>5.000.000.000)? This would hint to a 64-bit number. If the message length read by the server is smaller, but still much too large (like 1.000.000.000 or 1.000.000) it's probably an endian issue. If the message size is about correct, the problem is due to something else...

于 2009-03-12T06:17:04.477 回答