Linux
下基于
TCP/IP
协议的文件传输程序
【设计目的】
通过
Linux C
编程,设计一个基于
TCP/IP
的文件传输系统,实现网络文件的收发
【设计环境】
Ubuntu 12.04
【设计方案】
(
1
)
文件读写
任意文件都可以二进制的方式进行读写,
为了实现任意文件类型的传输,在读写文件的过程
中,必须采用二进制的读写方式。
(
2
)
传输协议
为了保证数据的正确性,
文件传输需要采用一种可靠的传输协议。
UDP
协议实现比较简单,
但
UDP
面向无连接,传输过程中,会出现丢包的情况,导致数据发送失败。故采用面向连
接的
TCP/IP
协议,防止传输过程中的数据丢失的情况。
(
3
)
大文件的传输
对于比较大的文件,应该进行分包操作,以防止占用过多的内存,导致文件发送失败。
【设计流程】
如图
1
所示,服务器程序作为文件的发送方。首先,服务器端输入要发送的文件。然后,
创建一个流式套接字
(
SOCK_STREAM
),进行绑定。绑定成功后,执行监听,当有客户发
送连接请
求,执行
Accept
(),接收来自客户端的请求。
连接建立后,首先服务器向客服端发送的文件的文件名及扩展名等信息。
信息发送完毕,服
务器方将待发送的数据读入缓冲区,
通过套接字将数据发送出去。发送完成后退出,并显示
发送完
成的信息。