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

📄 setbufs.c

📁 《unix网络编程第二卷》中的源代码
💻 C
字号:
#include	"unpxti.h"intmain(int argc, char **argv){	int					fd;	struct t_opthdr		*topt;	struct t_optmgmt	*req, *ret;	if (argc != 3)		err_quit("usage: setbufs <device> <bufsiz>");	fd = T_open(argv[1], O_RDWR, NULL);	printf("Device = %s\n", argv[1]);	T_bind(fd, NULL, NULL);	req = T_alloc(fd, T_OPTMGMT, T_ALL);	ret = T_alloc(fd, T_OPTMGMT, T_ALL);	topt = (struct t_opthdr *) req->opt.buf;	topt->level = XTI_GENERIC;	topt->name = XTI_RCVBUF;	topt->len = sizeof(struct t_opthdr) + sizeof(u_long);	topt->status = 0;	/* ??? */	req->opt.len = topt->len;	*((u_long *) (topt + 1)) = atol(argv[2]);#ifdef	notdef	topt = OPT_NEXTHDR(req->opt.buf, req->opt.maxlen, topt);	topt->level = XTI_GENERIC;	topt->name = XTI_SNDBUF;	topt->len = sizeof(struct t_opthdr) + sizeof(u_long);	*((u_long *) (topt + 1)) = atol(argv[2]);	req->opt.len += topt->len;#endif	req->flags = T_NEGOTIATE;	T_optmgmt(fd, req, ret);	printf("returned flags = %ld, len = %d\n", ret->flags, ret->opt.len);	for (topt = (struct t_opthdr *) ret->opt.buf; topt != NULL;		 topt = OPT_NEXTHDR(ret->opt.buf, ret->opt.len, topt)) {		if (topt->level == XTI_GENERIC && topt->name == XTI_RCVBUF) {			printf("RCVBUF = %ld, status = %ld\n",				   *((u_long *) (topt + 1)), topt->status);		} else if (topt->level == XTI_GENERIC && topt->name == XTI_SNDBUF) {			printf("SNDBUF = %ld, status = %ld\n",				   *((u_long *) (topt + 1)), topt->status);		} else {			printf("unexpected option: len = %ld, level = %ld, name = %ld\n",				   topt->len, topt->level, topt->name);		}	}	exit(0);}

⌨️ 快捷键说明

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