前言
因为在写代码的时候感觉用VS太过臃肿,每次写个程序还要创建一个项目,并且特别占用空间,因此安装了mingw,可以在命令行中直接gcc编译,特别方便,安利一下~
并且在编译socket程序的时候,一定要加上-l wsock32
选项,因为mingw默认没有包含windows库
TCP版本
- SERVER端
1 | #include <Winsock2.h> |
- CLIENT端
1 | #include <WinSock2.h> |
- 编译
1 | gcc server.c -o server -lwsock32 |
UDP版本
- SERVER端
1 | #include <WinSock2.h> |
- CLIENT端
1 | #include <winsock2.h> |
- 编译
1 | gcc server_udp.c -o server_udp -lwsock32 |
总结
对于TCP版本的程序来说
1 | server 端:创建WSAStartup -》检测!=0 -》创建socket -》检测SOCKET_ERROR -》声明sockaddr_in结构 -》bind -》检测SOCKET_ERROR -》listen -》检测SOCKET_ERROR -》进入循环 -》accept -》检测SOCKET_ERROR -》接收、发送消息 |
1 | client 端:创建WSAStartup -》检测!=0 -》创建socket -》检测SOCKET_ERROR -》声明sockaddr_in结构 -》connect -》检测SOCKET_ERROR -》发送、接收消息 |
对于UDP版本的程序来说
1 | server 端:创建WSAStartup -》检测!=0 -》创建socket -》检测SOCKET_ERROR -》声明sockaddr_in结构 -》bind -》检测SOCKET_ERROR -》进入循环 -》发送、接收消息 |
1 | client 端:创建WSAStartup -》检测!=0 -》创建socket -》检测SOCKET_ERROR -》声明sockaddr_in结构 -》发送、接收消息 |
TCP中,使用send和recv函数进行发送和接收消息
UDP中,使用sendto和recvfrom函数进行发送和接收消息