c ++在套接字上发送recv

时间:2011-12-07 03:11:23

标签: c++ sockets

我正在编写一个需要相互通信的服务器客户端程序。我有记录存储在内存中,我想将所有这些记录发送到客户端。现在我首先将数字或记录发送给客户端,然后我尝试使用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++;
        }

1 个答案:

答案 0 :(得分:0)

不太确定您的问题是什么,但您没有检查recv()来电的返回代码。这应该是一个表示实际接收的字节数的正数,一个表示错误的负数,或者表示连接断开的0。

请注意,获得的数据比您要求的数据少得多,看看教程here如何处理这种情况。