文章目录
参考1(FTP原理和linux编程):https://www.ibm.com/developerworks/cn/linux/l-cn-socketftp/
参考2 (FTP命令字和响应码解释): https://www.cnblogs.com/steven0lisa/archive/2011/11/02/2233160.html
参考3 (官方文档):https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv
QT框架开发
- 在pro文件中加入
LIBS += libws2_32
windows sockets 编程
客户端流程
-
初始化 (WSAStartup())
-
创建套接字,构建服务器访问参数结构体(socket());
-
向服务器发出连接请求(connect());
-
和服务器进行通信(send()/recv())[linux是write() 和 read() ];
-
关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup());
服务端流程
-
加载套接字库,创建套接字(WSAStartup()/socket());
-
绑定套接字到一个IP地址和一个端口上(bind());
-
将套接字设置为监听模式等待连接请求(listen());
-
请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());
-
用返回的套接字和客户端进行通信(send()/recv())[linux是write() 和 read() ];
-
返回,等待另一个连接请求;
-
关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup());
WSADATA
这个结构被用来存储被WSAStartup函数调用后返回的Windows Sockets数据。它包含Winsock.dll执行的数据。
摘自<winsock.h>
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
#ifdef _WIN64
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo