我正在编写一个需要相互通信的服务器客户端程序。我有记录存储在内存中,我想将所有这些记录发送到客户端。现在我首先将数字或记录发送给客户端,然后我尝试使用while循环发送每条记录,但我只收到客户端的第一条记录。 客户端代码是第一个: 在这里输入代码
while(i < j){
recv(sockfd,infobuf,BUFFERSIZE-1,0);//records from mem
printf("\nrecords revieved %s",infobuf);
memset(infobuf,'\0',BUFFERSIZE);
i++;
}
服务器代码如下:
//send number of rec to client
printf("count as j %s", recordList);
send(reply_sock1_fd,recordList,strlen(recordList),0);
memset(recordList,'\0',BUFFERSIZE);
printf("\n count %d:", count);
int i = 0;
//look and send records to client
while(i < count){
printf("\ninside loopi (%d)", i);
strcat(strcat(strcat(strcat(strcpy(recordList,bufRec[i].first), " "),bufRec[i].last), " "),bufRec[i].userid);
printf("recordlist %s", recordList);
send(reply_sock1_fd,recordList,BUFFERSIZE,0);
memset(recordList,'\0',BUFFERSIZE);
i++;
}
答案 0 :(得分:0)
不太确定您的问题是什么,但您没有检查recv()
来电的返回代码。这应该是一个表示实际接收的字节数的正数,一个表示错误的负数,或者表示连接断开的0。
请注意,获得的数据比您要求的数据少得多,看看教程here如何处理这种情况。