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

📄 getpeername.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* posix */#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include <string.h>#include <errno.h>/* bsd extensions */#include <sys/uio.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/un.h>#include "priv.h"intgetpeername(int fd, struct sockaddr *addr, int *alen){	Rock *r;	int i;	struct sockaddr_in *rip;	struct sockaddr_un *runix;	r = _sock_findrock(fd, 0);	if(r == 0){		errno = ENOTSOCK;		return -1;	}	switch(r->domain){	case PF_INET:		rip = (struct sockaddr_in*)&r->raddr;		memmove(addr, rip, sizeof(struct sockaddr_in));		*alen = sizeof(struct sockaddr_in);		break;	case PF_UNIX:		runix = (struct sockaddr_un*)&r->raddr;		i = &runix->sun_path[strlen(runix->sun_path)] - (char*)runix;		memmove(addr, runix, i);		*alen = i;		break;	default:		errno = EAFNOSUPPORT;		return -1;	}	return 0;}

⌨️ 快捷键说明

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