当前位置: 技术问答>linux和unix
文件传输
来源: 互联网 发布时间:2014-11-24
本文导语: 通过socket建立tcp连接,要发送/接受一个文件(大约有4M大),不知道buffer怎么建。而且tcp有没有buffer的大小限制.最好有代码。thanks!!! | 不必考虑BUFFER的大小,那是底层的事 int send (Socket, Mes...
通过socket建立tcp连接,要发送/接受一个文件(大约有4M大),不知道buffer怎么建。而且tcp有没有buffer的大小限制.最好有代码。thanks!!!
|
不必考虑BUFFER的大小,那是底层的事
int send (Socket,
Message, Length, Flags)
int Socket;
const void *Message;
size_t Length;
int Flags;
int send (Socket,
Message, Length, Flags)
int Socket;
const void *Message;
size_t Length;
int Flags;
|
写的时候最好做个循环,因为有可能一次无法写完.
|
有两种方法解决:
1、发送文件前先发送文件的字节数。
2、发送完文件后发送结束标志,注意:结束标志要比较特殊,在文件中不能存在。
1、发送文件前先发送文件的字节数。
2、发送完文件后发送结束标志,注意:结束标志要比较特殊,在文件中不能存在。
|
同意
|
因为文件一次发不完,那么接受方怎么知道文件是否发完
你说的结束标志是不是EOF,等到文件发送完后,在发这个字符过去?
_________这是os考虑的问题(TCP自己解决,不用考虑)
send和sendto有什么区别,如果我在tcp中用sendto来发送文件会有什么问题。多多帮忙(我也没办法,要考虑兼容)。
_______参数就不同:)
但如果不是文本文件,比如说是通过gcc编译后的文件,却没有传送过来。
_______仅仅对SOCKET编程而言,这是不会存在的问题,因为它不用考虑传输中的编码问题:)
希望没有都说错:)至于分,要不要一样,因为我来这儿是学习的:)
你说的结束标志是不是EOF,等到文件发送完后,在发这个字符过去?
_________这是os考虑的问题(TCP自己解决,不用考虑)
send和sendto有什么区别,如果我在tcp中用sendto来发送文件会有什么问题。多多帮忙(我也没办法,要考虑兼容)。
_______参数就不同:)
但如果不是文本文件,比如说是通过gcc编译后的文件,却没有传送过来。
_______仅仅对SOCKET编程而言,这是不会存在的问题,因为它不用考虑传输中的编码问题:)
希望没有都说错:)至于分,要不要一样,因为我来这儿是学习的:)
|
1、不一定要用EOF,自己定义也行。
2、对于TCP来说send和sendto没什么区别。
3、tcp的传输与文件格式没关系,应该是可以的,估计是你的程序有问题。
2、对于TCP来说send和sendto没什么区别。
3、tcp的传输与文件格式没关系,应该是可以的,估计是你的程序有问题。