游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2066|回复: 3

跨平台通信问题

[复制链接]

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
发表于 2007-9-12 16:37:00 | 显示全部楼层 |阅读模式
大家好.我在做程序中遇到了跨平台通信问题.
我这边是windows系统.对方linux系统.
比如说发送这个包.
#pragma pack(push,1)
struct LOGIN_REQ
{
        short           nVersion;      
        short           nCommand;                 
        char            sUsername[40];  //username
        char            sMD5Pass[16];  //md5 password
        unsigned int    nIP;            //ip address

};
#pragma pack()

LOGIN_REQ packet;
memcpy(buf, &pacekt, sizeof(LOGIN_REQ));
send(buf, sizeof(LOGIN_REQ));
其中buf是发送缓冲区,这样发送会不会造成对方解西错误?
如果解决,该怎么解决呢?

1

主题

9

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2007-9-12 16:40:00 | 显示全部楼层

Re:跨平台通信问题

定义与平台无送的消息格式! 而不是像楼主那样,只是简单的复制进去!

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
 楼主| 发表于 2007-9-12 16:46:00 | 显示全部楼层

Re:跨平台通信问题

...ls是指 数据全部byte类型吗?

12

主题

88

帖子

133

积分

注册会员

Rank: 2

积分
133
 楼主| 发表于 2007-9-12 18:00:00 | 显示全部楼层

Re:跨平台通信问题

大致明白了
是对其中的short 和int类型做htonX转换吧?然后解析一方做ntohX转换.
LOGIN_REQ packet;
packet.nVersion = htons(version);
.......
memcpy(buf, &pacekt, sizeof(LOGIN_REQ));
send(buf, sizeof(LOGIN_REQ));
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 21:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表