⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 passive.h

📁 模拟银行ATM提款机系统(单线程)
💻 H
字号:
/*passive.h*/

#include "winsock.h"
#include "memory.h"
#include "stdio.h"

int passivesock(const unsigned port,const char *transport,int qlen)
{
/*
 *    port       -integer type
 *    transport  -"tcp" or "udp"
 *    qlen       -maximum server request queue length
*/
    struct sockaddr_in sin;
    struct protoent  *ppe;
    int s,type;

    memset(&sin,0,sizeof(sin));
    sin.sin_family=AF_INET;
	sin.sin_port=htons((u_short)port);
	sin.sin_addr.s_addr=INADDR_ANY;

	if ((ppe=getprotobyname(transport))==0)
	{
		printf("Cann't get %s protocol entry",transport);
		exit(1);
	}

	if (strcmp(transport,"udp")==0)
		type=SOCK_DGRAM;
	else
		type=SOCK_STREAM;

	s=socket(PF_INET,type,ppe->p_proto);
	if (s<0) 
	{
		printf("Can't create socket");
		exit(1);
	}

	if (bind(s,(struct sockaddr*)&sin,sizeof(sin))<0)
	{
		printf("Can't bind to %d port",port);
		exit(1);
	}
	if (type==SOCK_STREAM && listen(s,qlen)<0)
	{
		printf("Can't listen on %d port",port);
		exit(1);
	}
	return s;
}


passiveTCP(const unsigned port,int qlen)
{
     return passivesock(port,"tcp",qlen);
}

passiveUDP(const unsigned port)
{
     return passivesock(port,"udp",0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -