相手から"a"で始まり"z"で終わるデータが送られてきます。
a1234567z なら 1234567 を送信しているとみなします。
ただし、通信内容は全て数字とします。
(つまり、aやzが区切りとして以外送られることはない)
以下のように書いたのですが、0バイトのデータ("az"と送られる)
がやってくると上手く処理してくれませんでした。
なにかうまくする方法はありますか?
それとも根本からおかしいのでしょうか?
int recvex (SOCKET s, char FAR * buf, int len,int flags )
{
int ret,ret2=0,i;
char *size,tmp1[4000],*tmp2,test[1000];
int n=0;
memset(test,'\0',1000);
ret= recv(s,tmp1,len, flags);
int limit =ret;
int mark=limit;
int pos=0;
while(pos<limit){
//aをさがす
if(tmp1[pos]=='a'){
mark=pos;
}
//zを探す
if(tmp1[pos]=='z'){
int pos03=pos;
pos=mark;
if(pos03>pos){
//データ部の切り出し
n=pos03-pos-1;//-14;
tmp2=new char[n];
memcpy(tmp2,&tmp1[mark+1],n);
memset(buf,NULL,sizeof(buf));
//0バイトのデータがきたとき
if(strstr(tmp1,"az")!=NULL){
memcpy(buf,&tmp2[0],1);
strcpy(buf,""); //bufに空のデータを入れる
MessageBox(NULL,"空っぽのデータが来ました","空っぽのデータ",NULL);
return 0;
}
//0ではないデータが来たとき
memcpy(buf,&tmp2[0],n);
strcpy(&buf[n],"\0");
MessageBox(NULL,buf,"bufの中身の確認",NULL);
}else{
return n;
}
pos=pos03;
}
pos++;
}
return n;
}
