64,654
社区成员
发帖
与我相关
我的任务
分享
while(1)
{
nRet = select(0, &fds, NULL, NULL, &tmOut);
if (nRet == 0)
{ // Time expired
continue;
}
int nhead= 4;
unsigned char headData[4];
memset(headData, 0, sizeof(headData));
int n=recv(sockClient,(char*)headData,sizeof(headData), 0);//read the head of dragram
if (n=nhead)
{ //verify the length of packet (1044 byt4e)
/*unsigned int headData1 = ntohl(headData[0]);
unsigned int headData2 = ntohl(headData[1]);
unsigned int headData3 = ntohl(headData[2]);
unsigned int headData4 = ntohl(headData[3]);*/
unsigned int headData1 = headData[0];//问题应该就在此处!!!
unsigned int headData2 = headData[1];//问题应该就在此处!!!
unsigned int headData3 = headData[2];//问题应该就在此处!!!
unsigned int headData4 = headData[3];//问题应该就在此处!!!
std::cout << "n=" << n << std::endl;
std::cout << headData1 << " " << headData2 << " " << headData3 << " " << headData4 << std::endl;
//memcpy(data, recvBuf, sizeof(recvBuf));
//memset(recvBuf, 0, sizeof(recvBuf));
std::cout << "n = " << n << std::endl;
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%d\n",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {
printf("skip char[%c]\n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
int nhead= 4;
unsigned char headData[4];
memset(headData, 0, sizeof(headData));
int n=recv(sockClient,(char*)headData,sizeof(headData), 0);/
void HexDump(char *buf,int len,int addr) {
int i,j,k;
char binstr[80];
for (i=0;i<len;i++) {
if (0==(i%16)) {
sprintf(binstr,"%08x -",i+addr);
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
} else if (15==(i%16)) {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
sprintf(binstr,"%s ",binstr);
for (j=i-15;j<=i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
} else {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
}
}
if (0!=(i%16)) {
k=16-(i%16);
for (j=0;j<k;j++) {
sprintf(binstr,"%s ",binstr);
}
sprintf(binstr,"%s ",binstr);
k=16-k;
for (j=i-k;j<i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
}
}