当前位置: 技术问答>linux和unix
linux socket 问题
来源: 互联网 发布时间:2017-01-12
本文导语: typedef struct tag_Buffer //发送缓冲区 { long int CountBuffLen; //本次要发送的数据总大小 char szSendBuffer[512]; //要发送的缓冲区 }BUFFER,*LPBUFFER; typedef struc...
typedef struct tag_Buffer //发送缓冲区
{
long int CountBuffLen; //本次要发送的数据总大小
char szSendBuffer[512]; //要发送的缓冲区
}BUFFER,*LPBUFFER;
typedef struct tag_Packets //公用头格式
{
char SourceSendAddr[64]; //发送客户地址
unsigned int SourceSendPort; //发送客户端口
char DestSendAddr[64]; //发送客户地址
unsigned int DestSendPort; //发送客户端口
unsigned char packetVerifyCode; //校验码 //暂时不用填
HT_COMM_BUFFER st_HtComm_Buffer; //发送缓冲区
}PACKETS,*LPPACKETS;
send 函数被我封装了。。提供了发送缓冲区指针和长度,他们只需要填写这个。。。
然后发送方式
PACKETS st_ComPackets;
memset(&st_ComPackets,'',sizeof(st_ComPackets));
st_ComPackets.st_HtComm_Buffer.CountBuffLen = 8;
strcpy(st_ComPackets.st_HtComm_Buffer.szSendBuffer,"1234567");
strcpy(st_ComPackets.DestSendAddr,"127.0.0.1");
st_ComPackets.DestSendPort = 48887;
printf("第二次大小:%dn",sizeof(st_ComPackets));
printf("OKn");
char szSendString[1024] = {''};
memcpy(szSendString,&st_ComPackets,sizeof(st_ComPackets));
if (!SendMsg(szSendString,sizeof(st_ComPackets)))
{
perror("dd");
}
我抓包发现没发送出去,数据包有问题 ,为啥。
|
memcpy(szSendString,&st_ComPackets,sizeof(st_ComPackets));
if (!SendMsg(szSendString,sizeof(st_ComPackets)))
这两句感觉没问题,但是感觉多余了,不用memcpy也可以吧
你先把SendMsg函数,改一下,改成不用传值,直接使用send发送,能不能发送出去,然后再改写SendMsg