搭建开发环境
1、安装GNU编译器
解压mingw.rar到C盘
把C:\mingw\bin路径添加到 path 环境变量中
打开命令提示符,使用gcc -v检查配置是否成功
2、安装VS Code文本编译器
安装C/C++、Chinese、Code Runner插件。
写一个HelloWorld程序编译并执行
Windows 系统下的 socket 编程
1、winsock2.h,Windows系统下使用socket只需要一个头文件。
2、编译时需要添加ws2_32.lib库,设置->搜索code-runner.executorMap,打开settings.json文件,把C的编译参数修改为:
"c": "cd $dir && gcc $fileName -std=gnu99 -lws2_32 -lpthread -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
3、初始化网络库:
int WSAStartup (WORD wVersionRequested, LPWSADATA lpWSAData);
功能:初始化网络库
mVersionRequested:明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本。
MAKEWORD(主版本号,副版本号),一般使用2,2即可。
lpWSAData:返回请求的版本信息。
返回值:成功返回0,失败返回错误信息。
4、使用标准socket收发数据接口
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:接收数据
sockfd:socket对象描述符
buf:缓冲区首地址
len:缓冲区的大小
flags:是否阻塞,一般写0即可。
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
功能:发送数据。
sockfd:socket对象描述符。
buf:待发送的数据首地址。
len:要发送的字节数。
flags:是否阻塞,一般写0即可
int closesocket(int socket);
功能:关闭 socket 对象
如何优雅得使用socket
由于大小端的原因,在使用socket通信时不能直接发送变量,而是要发送字符串,因此要先把要发送的数据转换成字符串再发送。
int sprintf(char *str,