C语言Socket网络文件传输(可循环发送多个文件)
时间:2021-09-03 10:08:22
手机看文章
扫描二维码
随时随地手机看文章
[导读]本次文件传输的实现主要是通过客户端向服务器发送下载请求,然后在服务器中找到对应的文件并打开文件,再继续向客户端传送文件,而客户端就在不停的接收。这是因为文件可能比较大,一个缓冲数组只能保存一部分文件内容,因此服务器得不断从文件中读取内容并发给客户端,而客户端得不停的循环接收。记住...
本次文件传输的实现主要是通过客户端向服务器发送下载请求,然后在服务器中找到对应的文件并打开文件,再继续向客户端传送文件,而客户端就在不停的接收。这是因为文件可能比较大,一个缓冲数组只能保存一部分文件内容,因此服务器得不断从文件中读取内容并发给客户端,而客户端得不停的循环接收。记住一定要先运行服务器,在运行客户端。这里是本地回环测试,如果有公网服务器或者局域网测试,请吧127.0.0.1改成对应的服务器所在的计算机的ip地址。
测试过7G的文件传输,总用时02m03s
文件结构:
tcpSocket.c
测试过7G的文件传输,总用时02m03s
- ckground-color: rgb(255, 255, 255);">
- 文件大小读取35s
- 文件传输0m27s
文件结构:
- tcpSocket.h 简单封装的Tcp socket接口头文件
- tcpSocket.c 简单封装的Tcp socket接口源文件
- server.c 文件传输服务器
- client.c 文件传输客户端
#ifndef _TCPSOCKET_H_ #define _TCPSOCKET_H_ #include #include #include//头文件 #pragma comment(lib,"ws2_32.lib")//库文件 #define err(errMsg) printf("[error] %s failed,code %d \ line:%d\n",errMsg, WSAGetLastError(),__LINE__); #define PORT 8888//0~1024 是系统保留,我们一般不用 #define SendSize((size_t)(100 * 1024 * 1024))//一次性发送的数据大小 //初始化网络库 bool init_Socket(); //关闭网络库 bool close_Socket(); //服务器:创建服务器socket SOCKET create_serverSocket(); //客户端:创建客户端socket SOCKET create_clientSocket(const char* ip); #endif // !_TCPSOCKET_H_tcpSocket.c
#include"tcpSocket.h"
bool init_Socket(){ WSADATA wsadata; if (0 != WSAStartup(MAKEWORD(2, 2), 




