我正在尝试将char
数组发送到服务器,但我无法发送整个内容。我发现我没有收到它只发送前四个数据包。
这是我想一次性发送的数据。
char msg1[]={0xff,0xfd,0x03,0xff,0xfb,0x18,0xff,0xfb,0x1f,0xff,0xfb,0x20,0xff,0xfb,0x21,0xff,0xfb,0x22,0xff,0xfb,0x27,0xff,0xfd,0x05,0xff,0xfb,0x23};
这是我用来检查是否所有字节都已发送的函数。如果不。发送其余的。
int send_all(int s,char *buf,int *len)
{
int total=0; //total bytes sent
int byteslft= *len; //bytes left to be sent
int n; //value returned by send()
while(total<*len)
{
n=send(s,(buf+total),byteslft,0);
if(n== -1)
break;
total +=n; //total bytes sent will be in total
byteslft -=n; //total bytes left to be sent is stored here
}
*len= total;
return (n==-1)?-1:0;
}
这就是我试图发送它的方式
len=sizeof (*(arr+i)) ;
if((numbytes=send_all(sockfd,(*(arr+i)),&len))==-1)
{
perror("send");
continue;
}
为了清楚起见,我已经完成了在此之前的 connect()、socket() 等步骤。
这就是我初始化指向数组的指针msg
数组的方式。
char *arr[]={msg1,msg2,msg3,msg4....};
当我调试我的程序时,我看到它只是发送
ff fd 03 ff //message stops sending here
这就是为什么我没有从服务器获得所需的响应。