Socket编程C语言实现文件传输
用 C 写 Socket 的文件传输,挺锻炼人。项目主打点是:Windows 下用 C 实现文件上传下载,用的老熟人 winsock2.h
,搭配 Visual Studio 2017,环境亲民,入门门槛也不高。
Socket 的接口比较底层,但理解了 WSAStartup
、socket
、connect
这一套流程,其实逻辑也挺清晰。TCP 协议用起来也靠谱,适合文件这种要求完整性的传输场景。
上传下载的核心其实就俩字:分包。比如你要发个大文件,不分包直接 send
,基本上等着出错;而且每个包要带点头信息,不然服务器那边也不知道顺序对不对。
传输过程用的就是 send
+ recv
,简单暴力。上传的时候客户端打开文件一包一包发,服务端接到就往磁盘写;下载正好反着来。
项目没做多线程,所以服务器只能一个一个服务,想多客户端并发的话得你自己拓展,多线程或多进程都行。还有一点,本地文件操作用的就是经典三件套:fopen
、fwrite
、fread
,也算是基本功练习。
容错机制也考虑了一点,比如设置 SO_RCVTIMEO
来超时重传。你可以根据返回值来判断有没有收到,决定要不要重新发。
如果你正好想搞清楚 C 语言怎么玩 Socket 传文件,这个项目还挺合适的。实战性不错,结构也清楚,适合拿来做练手项目。如果你想了解更完整的传输方案,可以顺手看看 这个 TCP 大文件传输的资料。
记得哦,正式项目里最好加上异常和加密传输,安全和健壮性都重要。
下载地址
用户评论