CSocket 的int Send(const void* lpBuf,int nBufLen, int nFlags = 0 );只能传char字符串吗?能不能传结构体或其他什么的?
例如我要通知服务器执行删除数据库id为1234的记录,假如已首先约定服务器收到cmd=3为执行删除任务,那么在客户端传送的数据包结构为:{cmd=3,id=1234}又或者,客户端向服务器端请求指定id的个人信息,个人信息包括(id,姓名,年龄,积分),服务器端如何用一个包把这个信息发送到客户端,客户端获接收到包后又如何解析出各个字段的信息的?
主要疑问是,假如只是传了一串的char 过去的话,要把各个字段的信息解析划分开来很麻烦,有什么好的方法去解决这个问题?
大伙平时是怎么去做的?请多多指教,谢谢!
例如我要通知服务器执行删除数据库id为1234的记录,假如已首先约定服务器收到cmd=3为执行删除任务,那么在客户端传送的数据包结构为:{cmd=3,id=1234}又或者,客户端向服务器端请求指定id的个人信息,个人信息包括(id,姓名,年龄,积分),服务器端如何用一个包把这个信息发送到客户端,客户端获接收到包后又如何解析出各个字段的信息的?
主要疑问是,假如只是传了一串的char 过去的话,要把各个字段的信息解析划分开来很麻烦,有什么好的方法去解决这个问题?
大伙平时是怎么去做的?请多多指教,谢谢!
{
long nID;
char m_Name[MAX_PATH];
char n_Age[MAX_PATH];
int n_gral[MAX_PATH];
} X_Info;
Send(&X_Info,sizeof(X_Info),0);
服务器端这样就行了,不过在客户端你要定义一张相同的结构来接收这段数据。
这样做的前提是你发送的数据是定长的,如果不是定长的,就只有解析了。
memcpy(&结构体变量,buffer,strlen(buffer))