c++客户端与php服务器进行socket通信

如题,小弟目前在做一款游戏,客户端是cocos2d-x的c++代码,服务器用的php,现在进行socket通信,其他一切还好,就是在发送信息前面,加上4字节的包头时,怎么样发送,服务器都无法解析,有知道的大侠帮忙解一下惑吗?小弟在此万分感谢~~~
代码如下:
#pragma pack(1)
struct SocketPackage
{
int Package_Length;
int Package_Head;
char Package_String[512];
};
#pragma pack()

如果不加两个int字段,一切ok,加上两个int字段后,转成string发送给服务器,服务器总是解析不出我的数据。请诸位知道的大侠不吝赐教~

3个回答

个人建议先测试只发送你的结体体包头,注意接收的时候也要使用结构体来接收。看看有无bug,去掉#pragma pack(1)和#pragma pack(),可能是sizeof(结构体)两边不同

linyang24
惟伊之恋 回复小乌龟在大乌龟背上: 哦 好
接近 3 年之前 回复
what951006
小乌龟在大乌龟背上 回复一生一世守伊人: 分给我吧0.0
接近 3 年之前 回复
linyang24
惟伊之恋 已经解决掉了,谢谢~
接近 3 年之前 回复

服务器端是怎么解析的,只有一端的定位不了

iamoyjj
欧阳嘉 服务端是什么函数解析的,为什么解析不了?如果是按照转char*解析,那现在的现象就可以理解,前面的int中的0解析为/0提前终止了字符串解析
接近 3 年之前 回复
linyang24
惟伊之恋 服务端现在是解析不出来我发送的数据
接近 3 年之前 回复

socket通信 ,双方对于传输的数据,都认为是字节流,就是字符串。

linyang24
惟伊之恋 服务器端现在时把前4个字节unpack进行解包
接近 3 年之前 回复
linyang24
惟伊之恋 这个我明白,我是发送的时候,结构体强转成char* 发送
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问