📄 passive.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 + -