PHP 与 C 通信 .
程序员文章站
2022-06-09 18:54:05
...
PHP 与 C 通信 求助..........
功能:修改用户账户
服务器端是 C语言 UDP协议
ip:8.14.26.53
port:34556
客户端是 PHP
如何发包过去?
服务器提供的协议:
1、包头
Typedef struct
{
unsigned short ushLength; //包长度
unsigned int uSequence; //请求包seq
unsigned short ushCmd; //命令(0x2用户修改密)
char cResult;
}PkgHead;
2、修改密码
Typedef struct
{
Char cStx; //0x2
PkgHead stHead;
Unsigned int Uin; //用户ID
Unsigned short ushUserNameLength;//用户名长度
Char sUserName[]; //用户名buf
Unsigned short ushPasswdLength; //密码长度
Char sPasswd[]; //密码buf
Char cEtx; //0x3
}ReqPasswdResetPkg;
Typedef struct
{
Char cStx;
PkgHead stHead;
Char eStx;
} RespPasswdResetPkg;
------解决方案--------------------
应该是socket,去查查资料吧
------解决方案--------------------
pack将每一个数值打包到大端, 拼为字节流写出去就行了。
C服务端注意#progma pack(1)保证结构体无填充, 否则PHP这端处理起来还是麻烦了点.
建议协议尽量走JSON/XML, 对于C还是PHP还是其他任何语言都是有利的, 现在不流行二进制协议了.
功能:修改用户账户
服务器端是 C语言 UDP协议
ip:8.14.26.53
port:34556
客户端是 PHP
如何发包过去?
服务器提供的协议:
1、包头
Typedef struct
{
unsigned short ushLength; //包长度
unsigned int uSequence; //请求包seq
unsigned short ushCmd; //命令(0x2用户修改密)
char cResult;
}PkgHead;
2、修改密码
Typedef struct
{
Char cStx; //0x2
PkgHead stHead;
Unsigned int Uin; //用户ID
Unsigned short ushUserNameLength;//用户名长度
Char sUserName[]; //用户名buf
Unsigned short ushPasswdLength; //密码长度
Char sPasswd[]; //密码buf
Char cEtx; //0x3
}ReqPasswdResetPkg;
Typedef struct
{
Char cStx;
PkgHead stHead;
Char eStx;
} RespPasswdResetPkg;
------解决方案--------------------
应该是socket,去查查资料吧
------解决方案--------------------
pack将每一个数值打包到大端, 拼为字节流写出去就行了。
C服务端注意#progma pack(1)保证结构体无填充, 否则PHP这端处理起来还是麻烦了点.
建议协议尽量走JSON/XML, 对于C还是PHP还是其他任何语言都是有利的, 现在不流行二进制协议了.
相关文章
相关视频
上一篇: PHP编程中字符串处理的5个技巧小结