📄 getsockname.2
字号:
.\" $OpenBSD: getsockname.2,v 1.16 2001/08/06 10:42:26 mpech Exp $.\" $NetBSD: getsockname.2,v 1.6 1995/10/12 15:41:00 jtc Exp $.\".\" Copyright (c) 1983, 1991, 1993.\" The Regents of the University of California. All rights reserved..\".\" Redistribution and use in source and binary forms, with or without.\" modification, are permitted provided that the following conditions.\" are met:.\" 1. Redistributions of source code must retain the above copyright.\" notice, this list of conditions and the following disclaimer..\" 2. Redistributions in binary form must reproduce the above copyright.\" notice, this list of conditions and the following disclaimer in the.\" documentation and/or other materials provided with the distribution..\" 3. All advertising materials mentioning features or use of this software.\" must display the following acknowledgement:.\" This product includes software developed by the University of.\" California, Berkeley and its contributors..\" 4. Neither the name of the University nor the names of its contributors.\" may be used to endorse or promote products derived from this software.\" without specific prior written permission..\".\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION).\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF.\" SUCH DAMAGE..\".\" @(#)getsockname.2 8.1 (Berkeley) 6/4/93.\".Dd July 17, 1999.Dt GETSOCKNAME 2.Os.Sh NAME.Nm getsockname.Nd get socket name.Sh SYNOPSIS.Fd #include <sys/types.h>.Fd #include <sys/socket.h>.Ft int.Fn getsockname "int s" "struct sockaddr *name" "socklen_t *namelen".Sh DESCRIPTION.Fn getsocknamereturns the locally bound address information for a specified socket..PpCommon uses of this function are as follows:.Bl -bullet.ItWhen.Xr bind 2is called with a port number of 0 (indicating the kernel should pickan ephemeral port).Fn getsocknameis used to retrieve the kernel-assigned port number..ItWhen a process calls.Xr bind 2on a wildcard IP address,.Fn getsocknameis used to retrieve the local IP address for the connection..ItWhen a function wishes to know the address family of a socket,.Fn getsocknamecan be used..El.Pp.Fn getsocknametakes three parameters:.Pp.Fa s ,Contains the file desriptor for the socket to be looked up..Pp.Fa namepoints to a.Li sockaddrstructure which will hold the resulting address information.Normal use requires one to use a structurespecific to the protocol family in use, such as.Li sockaddr_in(IPv4) or.Li sockaddr_in6(IPv6), cast to a (struct sockaddr *)..PpFor greater portability (such as newer protocol families) the newstructure sockaddr_storage exists..Li sockaddr_storageis large enough to hold any of the other sockaddr_* variants.On return, it should be cast to the correct sockaddr type,according to the current protocol family..Pp.Fa namelenIndicates the amount of space pointed to by.Fa name ,in bytes.Upon return,.Fa namelenis set to the actual size of the returned address information..PpIf the address of the destination socket for a given socket connection isneeded, the.Xr getpeername 2function should be used instead..PpIf.Fa namedoes not point to enough space to hold the entire socket address, theresult will be truncated to.Fa namelenbytes..Sh RETURN VALUESOn success,.Fn getsocknamereturns a 0, and.Fa namelenis set to the actual size of the socket address returned in.Fa name .Otherwise,.Va errnois set, and a value of \-1 is returned..Sh ERRORSIf.Fn getsocknamefails,.Va errnois set to one of the following:.Bl -tag -width Er.It Bq Er EBADFThe argument.Fa sis not a valid descriptor..It Bq Er ENOTSOCKThe argument.Fa sis a file, not a socket..It Bq Er ENOBUFSInsufficient resources were available in the systemto perform the operation..It Bq Er EFAULTThe.Fa nameparameter points to memory not in a valid part of theprocess address space..El.Sh SEE ALSO.Xr accept 2 ,.Xr bind 2 ,.Xr getpeername 2 ,.Xr getpeereid 2 ,.Xr socket 2.Sh BUGSNames bound to sockets in the UNIX domain are inaccessible;.Nm getsocknamereturns a zero length name..Sh HISTORYThe.Fn getsocknamefunction call appeared in.Bx 4.2 .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -