GETPEERNAME - Linux手册页
Linux程序员手册 第2部分
更新日期: 2017-09-15
名称
getpeername-获取连接的对等套接字的名称
语法
#包括
int getpeername(int sockfd,struct sockaddr * addr,socklen_t * addrlen);
说明
getpeername()在addr指向的缓冲区中返回连接到套接字sockfd的对等方的地址。应该初始化addrlen参数以指示addr指向的空间量。返回时,它包含返回名称的实际大小(以字节为单位)。如果提供的缓冲区太小,名称将被截断。
如果提供的缓冲区太小,返回的地址将被截断。在这种情况下,addrlen将返回一个大于提供给调用的值。
返回值
成功时,返回零。如果出错,则返回-1,并正确设置errno。
错误说明
- EBADF
- 参数sockfd不是有效的文件描述符。
- EFAULT
- addr参数指向不在进程地址空间有效部分中的内存。
- EINVAL
- addrlen无效(例如,为负)。
- ENOBUFS
- 系统中没有足够的资源来执行操作。
- ENOTCONN
- 插座未连接。
- ENOTSOCK
- 文件描述符sockfd不引用套接字。
遵循规范
POSIX.1-2001,POSIX.1-2008,SVr4、4.4BSD(getpeername()首次出现在4.2BSD中)。
备注
有关socklen_t类型的背景,请参见accept(2)。
对于流套接字,一旦执行了connect(2),则任何一个套接字都可以调用getpeername()来获取对等套接字的地址。另一方面,数据报套接字是无连接的。在数据报套接字上调用connect(2)仅设置通过write(2)或recv(2)发送的传出数据报的对等地址。 connect(2)的调用者可以使用getpeername()来获取它先前为套接字设置的对等地址。但是,对等套接字不知道此信息,并且在对等套接字上调用getpeername()不会返回任何有用的信息(除非对等套接字也执行了connect(2)调用)。还要注意,使用recvfrom(2)时,数据报的接收方可以获得发送方的地址。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。