Linux C 文件传输程序(TCP && UDP) 遇到的一些问题
2014-09-17 09:41
423 查看
1.sendto(sockfd,buf,strlen(buf),0,(SA*) &cliaddr,sizeof(cliaddr))
这个函数一般用于udp的传输.
最后一个参数为sockaddr_in 结构体长度,而不是经过转型后的 sockaddr
这点尤为要注意.自己一开始没注意到这点,结果数据就发不出去了.
2.创建文件 777 权限
int wno = open(filename,O_WRONLY|O_CREAT, S_IRWXU);
3. 对于从文件中读取数据read(rno,buf,128)
则会读取最多128个字节数据到buf数组中,并且会在数组最后添加'\0'结束
基于 TCP传输无边界的特点
对于ACCPET端
read(tcp_socket,buf,128).
两种情况会解除阻塞
1.接收到大于等于128个字节的数据
2.接收到少于128个字节的数据,但这些数据流是以'\0'结束的.
对于文件传输,每段从文件中读出并且传输的数据必然带有'\0'.
而对于普通的文本传输,如
write(tcp_socket,"test",4);
如果接收方是这样
read(tcp_socket,buf,100);
则接收方接收了4个字节后会继续阻塞,直到接收到之后的96个字节,或者是'\0'
所以要这样发送write(tcp_socket,"test\0",4);
给个例子
send: write(tcp_socket,"ok\0",3);
receive: read(tcp_socket,buf,10)
read返回值是3
buf的长度是2
‘\0’ 也作为数据进行传输
普通数组 结构体只要是定长 就可以转换成void*进行传输 即发送和接收的容器大小要一致.
而不定长则要序列化.
如果想要更进一步去了解每个api的工作原理,就去看看TCP或者UDP的源码吧
这个函数一般用于udp的传输.
最后一个参数为sockaddr_in 结构体长度,而不是经过转型后的 sockaddr
这点尤为要注意.自己一开始没注意到这点,结果数据就发不出去了.
2.创建文件 777 权限
int wno = open(filename,O_WRONLY|O_CREAT, S_IRWXU);
3. 对于从文件中读取数据read(rno,buf,128)
则会读取最多128个字节数据到buf数组中,并且会在数组最后添加'\0'结束
基于 TCP传输无边界的特点
对于ACCPET端
read(tcp_socket,buf,128).
两种情况会解除阻塞
1.接收到大于等于128个字节的数据
2.接收到少于128个字节的数据,但这些数据流是以'\0'结束的.
对于文件传输,每段从文件中读出并且传输的数据必然带有'\0'.
而对于普通的文本传输,如
write(tcp_socket,"test",4);
如果接收方是这样
read(tcp_socket,buf,100);
则接收方接收了4个字节后会继续阻塞,直到接收到之后的96个字节,或者是'\0'
所以要这样发送write(tcp_socket,"test\0",4);
给个例子
send: write(tcp_socket,"ok\0",3);
receive: read(tcp_socket,buf,10)
read返回值是3
buf的长度是2
‘\0’ 也作为数据进行传输
普通数组 结构体只要是定长 就可以转换成void*进行传输 即发送和接收的容器大小要一致.
而不定长则要序列化.
如果想要更进一步去了解每个api的工作原理,就去看看TCP或者UDP的源码吧
相关文章推荐
- TCP上传文件 遇到发现一些问题
- Qt中tcp传输文件遇到的问题
- server 2003 安装 VS 2003 遇到的问题 :安装frontpage 2000 web 客户端 和 安装程序运行时文件 失败
- VS-c# web程序:gridview保存Excel文件遇到的问题
- 记2416移植2.6.36内核和yaffs根文件系统时遇到的一些问题
- UDP编程中遇到的一些问题总结
- android写udp遇到的一些问题
- pl/sql程序编写中遇到的一些问题及解决办法
- 用anjuta编译gtk程序时出现类似与"main.c::10:21:gtk/gtk.h:没有那个文件和目录"问题的解决
- 向sdcard中添加文件遇到的一些问题
- 装sql server sp4时,遇到的问题:以前进行的程序安装创建了挂起的文件操作.运行程序之前,必须重新起动计算机
- 解决TCP/UDP传输文件时不能超过2G大小的问题
- linux下文件传送程序代码两例(分别基于tcp和udp)
- 文件传输程序个人小问题
- java编写TCP&&UDP方式的通信程序
- 用UDP实现在网络上传输文件的问题。
- 安装SQL200的遇到的问题:以前的某个程序安装已在安装计算机上穿件挂起的文件操作。运行安装程序之前必须重新启动计算机
- 部署Yonkly程序时遇到的一些问题
- 解决TCP网络传输"粘包"问题
- C#开发的GDAL程序部署遇到的问题 (无法加载 DLL“gdal_wrap” Unable to load DLL 'gdal_wrap')