当前位置: 技术问答>linux和unix
关于socket中send函数的一个问题请教
来源: 互联网 发布时间:2016-04-24
本文导语: 我定义了一个指针数组: uin8 *buffer; buffer=(uint8 *)malloc(1000);//分配1000个字节的内存 我想用send函数发送出去,循环发送,直至把数据发送完,每次发送固定的字节数,比如 uint8 sendlong=0; while(1) { send(sockefd,buffer+...
我定义了一个指针数组:
uin8 *buffer;
buffer=(uint8 *)malloc(1000);//分配1000个字节的内存
我想用send函数发送出去,循环发送,直至把数据发送完,每次发送固定的字节数,比如
uint8 sendlong=0;
while(1)
{
send(sockefd,buffer+sendlong,100,0);
sendlong+=100;
........
//判断退出
}
free(buffer);
我有2个疑问,首先send函数的第2个参数可不可以那么设置,因为是指针数组,是不是每发送一次,buffer的指针就自动向后
移动,比如第一次循环后发送了100个字节,这时指针是不是指向buffer的第100个字节的位置,第2次循环是,sendlong变成100,
那么这时发送是从buffer的100字节开始,还是第200个字节位置开始?
还有,发送完这个buffer中内容后,指针指向最后,用free释放的时候这样合不合适?谢谢高手们解答一下!
uin8 *buffer;
buffer=(uint8 *)malloc(1000);//分配1000个字节的内存
我想用send函数发送出去,循环发送,直至把数据发送完,每次发送固定的字节数,比如
uint8 sendlong=0;
while(1)
{
send(sockefd,buffer+sendlong,100,0);
sendlong+=100;
........
//判断退出
}
free(buffer);
我有2个疑问,首先send函数的第2个参数可不可以那么设置,因为是指针数组,是不是每发送一次,buffer的指针就自动向后
移动,比如第一次循环后发送了100个字节,这时指针是不是指向buffer的第100个字节的位置,第2次循环是,sendlong变成100,
那么这时发送是从buffer的100字节开始,还是第200个字节位置开始?
还有,发送完这个buffer中内容后,指针指向最后,用free释放的时候这样合不合适?谢谢高手们解答一下!
|
可以,buffer你没让它动,它不会动
第2次循环,sendlong变成100,这时发送是从buffer的100字节开始
free也是对的
|
可以做一个判断就是不超过sizeof(buffer)前提下
超过了就可以free了
超过了就可以free了
|
uint8是什么类型?
你分配的的空间内是否有数据,可以打印出来,以做对比
程序逻辑大致没问题.可以贴的详细一点让大家看一下
你分配的的空间内是否有数据,可以打印出来,以做对比
程序逻辑大致没问题.可以贴的详细一点让大家看一下