getsockname 子例程
用途
获取套接字名称。
库
标准 C 库 (libc.a)
语法
#include <sys/socket.h> int getsockname (Socket, Name, NameLength)
int Socket;
struct sockaddr * Name;
socklen_t * NameLength;
int Socket;
struct sockaddr * Name;
socklen_t * NameLength;
描述
getsockname 子例程检索指定套接字的本地 界限 地址。 套接字地址表示因特网域中的一个端口号,并存储在 姓名 参数指向的 索卡德尔 结构中。 sys/socket.h 文件定义 sockaddr 数据结构。
由另一个进程创建的进程可以继承打开的套接字。 要使用继承的套接字,创建的进程需要识别其地址。 getsockname 子例程允许一个进程检索绑定到指定套接字的本地地址。
进程可以使用 getpeername 子例程来确定套接字连接中的目标套接字的地址。
参数
| 项 | 描述 |
|---|---|
| 套接字 | 指定期望其本地地址的套接字。 |
| 名称 | 指向包含所指定套接字的本地地址的结构。 |
| NameLength | 指定本地地址的大小 (以字节为单位)。 初始化 NameLength 参数所指向的值,以指示 Name 参数所指向的空间量。 |
返回值
成功完成后,将返回值 0 ,并且 NameLength 参数指向套接字地址的大小。
如果 getsockname 子例程不成功,那么该子例程处理程序将执行以下功能:
- 会向调用程序返回-1的值。
- 将错误代码 (指示特定错误) 移动到 错误号 全局变量中。
- 对于
AF_UNIX域中的套接字,如果 NameLength 参数的返回值大于 255 ,那么由于 sun_len 字段的位大小限制,将为重载sockaddr结构中 sun_len 字段的对应值分配0xFF地址。
错误代码
如果发生以下任何错误,那么 getsockname 子例程不成功:
| 错误 | 描述 |
|---|---|
| EBADF | 插座 参数是无效的。 |
| ENOTSOCK | 插座 参数引用的是文件,而不是套接字。 |
| ENOBUFS | 系统中没有足够的可用资源来完成调用。 |
| Efault | 地址 参数未包含在用户地址空间的可写部分中。 |