rresvport.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 38 行

C
38
字号
/* posix */#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <time.h>/* socket extensions */#include <sys/socket.h>#include <netinet/in.h>#include <sys/un.h>intrresvport(int *p){	int fd;	short i;	struct	sockaddr_in in;	static int next;	fd = socket(PF_INET, SOCK_STREAM, 0);	if(fd < 0)		return -1;	i = 600 + ((getpid()+next++)%(1024-600));	memset(&in, 0, sizeof(in));	in.sin_family = AF_INET;	in.sin_port = htons(i);printf("in.sin_port = %d\n", in.sin_port);	if(bind(fd, &in, sizeof(in)) < 0){		close(fd);		return -1;	}	if(p)		*p = i;	return fd;}

⌨️ 快捷键说明

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