Windows:
test1.cpp
#ifdef WIN32
#include <windows.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define closesocket close
#endif
#include <stdio.h>
int main(int argc, char* argv[])
{
#ifdef WIN32
WSADATA ws;
WSAStartup(MAKEWORD(2, 2), &ws);
#endif
for (int i = 0; i < 2000; i++)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1)
{
printf("create socket failed!\n");
return -1;
}
printf("[%d]", sock);
//closesocket(sock);
}
getchar();
return 0;
}
用了好多文件句柄
Linux:
我们看到生成了1024个就失败了,因为linux中有最大文件句柄数量限制,可以自行修改,
我们在修改了最大数量后生成了2000个文件句柄