我想发送一个char
数组到服务器,我不能发送整个事情。我发现我没有收到它只发送前四个数据包。发送()使用TCP不发送整个阵列
这是我想要一次发送的数据。
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(),插座(),等等。在此之前的步骤仅仅是明确的。这是我如何初始化指向msg
数组的指针数组。
char *arr[]={msg1,msg2,msg3,msg4....};
当我调试我的程序,我看到它仅发送
ff fd 03 ff //message stops sending here
这就是为什么我没有收到来自服务器所需的响应。
我已经展示了如何初始化'array'。 – umayneverknow 2013-04-30 06:44:08
请显示'arr'的声明以及如何初始化它。 – 2013-04-30 06:44:21
顺便说一句,既然你有一个名为'byteslft'(无意义的缩写,btw)的变量,你应该在while循环中使用它。注意while(bytesleft> 0)'while'(total <* len)'比'while'好些? – unwind 2013-04-30 07:00:59