#ifdef WIN32
#include <windows.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define closesocket close
#endif
#include <stdio.h>
//#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
// windows 中调用 socket 库,有两步先要完成 Linux 中不需要
#ifdef WIN32
//1 初始化动态链接库
WSADATA ws;
WSAStartup(MAKEWORD(2, 2), &ws);//MAKEWORD(2, 2)对应的版本号
//2 加载网络库 引入lib库 #pragma comment(lib,"ws2_32.lib") 或者在 链接器-->输入-->附加依赖项 添加 ws2_32.lib
#endif
for (int i = 0; i < 2000; i++) {
int sock = socket(AF_INET, SOCK_STREAM, 0);// 1 用什么协议 TCP/IP, 2 传输层的协议 TCP/UDP, 3 略 可以直接填0 返回值 socket 句柄的 id 号 -1 代表创建失败
printf("[%d]", sock);
if (sock == -1) {
printf("create socket failed!");// Linux 中对单个进程有文件句柄最大数的限制 用ulimit -n 查看文件句柄的最大数
return -1;
}
//closesocket(sock);
//可以修改文件句柄最大数 ulimit -n 3000
}
getchar();
return 0;
}