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

📄 dgram.c

📁 understanding unix/linux programming source code(bruce molay)
💻 C
字号:
/*************************************************************** *	dgram.c *	support functions for datagram based programs */ #include	<stdio.h>#include	<unistd.h>#include	<sys/types.h>#include	<sys/socket.h>#include	<netinet/in.h>#include	<arpa/inet.h>#include	<netdb.h>#include	<string.h>#define   HOSTLEN  256int make_internet_address();int make_dgram_server_socket(int portnum){	struct  sockaddr_in   saddr;   /* build our address here */	char	hostname[HOSTLEN];     /* address 	         */	int	sock_id;	       /* the socket             */	sock_id = socket(PF_INET, SOCK_DGRAM, 0);  /* get a socket */	if ( sock_id == -1 ) return -1;	/** build address and bind it to socket **/	gethostname(hostname, HOSTLEN);         /* where am I ?         */	make_internet_address(hostname, portnum, &saddr);	if ( bind(sock_id, (struct sockaddr *)&saddr, sizeof(saddr)) != 0 )	       return -1;	return sock_id;}int make_dgram_client_socket(){	return socket(PF_INET, SOCK_DGRAM, 0);}int make_internet_address(char *hostname, int port, struct sockaddr_in *addrp)/* * constructor for an Internet socket address, uses hostname and port *   (host,port) -> *addrp */{	struct hostent	*hp;	bzero((void *)addrp, sizeof(struct sockaddr_in));	hp = gethostbyname(hostname);	if ( hp == NULL ) return -1;	bcopy((void *)hp->h_addr, (void *)&addrp->sin_addr, hp->h_length);	addrp->sin_port = htons(port);	addrp->sin_family = AF_INET;	return 0;}int get_internet_address(char *host, int len, int *portp, struct sockaddr_in *addrp)/* * extracts host and port from an internet socket address *   *addrp -> (host,port) */{	strncpy(host, inet_ntoa(addrp->sin_addr), len );	*portp = ntohs(addrp->sin_port);	return 0;}

⌨️ 快捷键说明

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