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

📄 udp_client.c

📁 《unix网络编程第二卷》中的源代码
💻 C
字号:
/* include udp_client */#include	"unpxti.h"intudp_client(const char *host, const char *serv, void **vptr, socklen_t *lenp){	int					tfd;	void				*handle;	struct netconfig	*ncp;	struct nd_hostserv	hs;	struct nd_addrlist	*alp;	struct netbuf		*np;	struct t_unitdata	*tudptr;	handle = Setnetpath();	hs.h_host = (char *) host;	hs.h_serv = (char *) serv;	while ( (ncp = getnetpath(handle)) != NULL) {		if (strcmp(ncp->nc_proto, "udp") != 0)			continue;		if (netdir_getbyname(ncp, &hs, &alp) != 0)			continue;		tfd = T_open(ncp->nc_device, O_RDWR, NULL);			T_bind(tfd, NULL, NULL);		tudptr = T_alloc(tfd, T_UNITDATA, T_ADDR);		np = alp->n_addrs;				/* use first server address */		tudptr->addr.len = min(tudptr->addr.maxlen, np->len);		memcpy(tudptr->addr.buf, np->buf, tudptr->addr.len);			endnetpath(handle);		netdir_free(alp, ND_ADDRLIST);		*vptr = tudptr;				/* return pointer to t_unitdata{} */		*lenp = tudptr->addr.maxlen;/* and size of addresses */		return(tfd);	}	endnetpath(handle);	return(-1);}/* end udp_client */intUdp_client(const char *host, const char *serv, void **vptr, socklen_t *lenp){	int		n;	if ( (n = udp_client(host, serv, vptr, lenp)) < 0)       	err_quit("udp_client error for %s, %s", host, serv);	return(n);}

⌨️ 快捷键说明

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