C++socket编程(二):系统socket库介绍

什么是套接字:
在这里插入图片描述
套接字是一个介质,由操作系统控制,
在这里插入图片描述
在这里插入图片描述
下面演示下windows和linux中的socket接口建立的代码,通用

#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); //相当于加载了动态库,给引用增加1,这个只需要调用以此,但是需要调用在最前面
#endif
	for (int i = 0; i < 1000; i++)
	{
		int sock = socket(AF_INET, SOCK_STREAM, 0);   //tcp协议,这样就创建了一个socket,返回值是int类型

		if (sock == -1)
		{
			printf("create socket failed\n");
			return -1;                                        //什么时候会失败,资源耗尽的时候,linux与文件的句柄数量有关
		}

		printf("[%d]", sock);                           //打印结果就是句柄的 id号

		closesocket(sock);
	}
	getchar();
	return 0;
}

注意linux中我们的ulimit -n num(设置socket启动数量,如果不设置默认就是最多支持1024个socket)。如果在linux中我们想建立多个socket,只需注掉closesocket即可。


版权声明:本文为weixin_43907175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。