getpeername和getsockname的区别是什么

我服务器在accept之后,不用这两个函数直接printf( "对方IP:%s ", inet_ntoa(Client_Address.sin_addr));
printf( "对方端口:%d ", ntohs(Client_Address.sin_port));也能获得IP地址和端口号,如果我直接打印获得的就是对方的商品号,那getpeername不是没有用吗?

你accept确实是是知道了对端的地址和端口号,但如果只有个一个socket 描述符的时候,你就使用这两个函数获取对应的地址和端口了。
温馨提示:内容为网友见解,仅供参考
无其他回答

getpeername和getsockname的区别是什么
你accept确实是是知道了对端的地址和端口号,但如果只有个一个socket 描述符的时候,你就使用这两个函数获取对应的地址和端口了。

创建TCP连接时,系统自动分配的端口,怎么样获取
用getsockname(获得本机绑定的socket的信息),getpeername(获得远程计算机的信息)。用着2个就可以了,这是socket标准里的函数

函数getsockname和getpeername的参数_易语言
.DLL命令 API_getsockname, 整数型, "ws2_32.dll", "getsockname",.参数 s, 整数型, ,.参数 name, sockaddr, ,.参数 namelen, 整数型, 传址,.DLL命令 API_getpeername, 整数型, "ws2_32.dll", "getpeername",.参数 s, 整数型, ,.参数 name, sockaddr, ,.参数 namelen, 整数型, ...

getpeername()的注释
getpeername()函数用于从端口s中获取与它捆绑的端口名,并把它存放在sockaddr类型的name结构中。它适用于数据报或流类套接口。返回值:若无错误发生,getpeername()返回零。否则的话,返回SOCKET_ERROR,应用程序可通过WSAGetLastError()来获取相应的错误代码。错误代码:WSANOTINITIALISED:在使用此API之前应...

列举几种系统调用
getsockname 取得本地socket名字 getpeername 获取通信对方的socket名字 getsockopt 取端口设置 setsockopt 设置端口参数 sendfile 在文件或端口间传输数据 socketpair 创建一对已联接的无名socket 七、用户管理 getuid 获取用户标识号 setuid 设置用户标志号 getgid 获取组标识号 setgid 设置组标志号 getegid...

怎样简单检测socket的健康状态
我们来总结一下简单地检测socket健康状态的全过程。1、用getsockname\/ getpeername来检测你的发送(send)方向的状态,如果你不知道你是否主动关闭了这个方向;2、用select和recv(,,1,MSG_PEEK)来共同检测你的接收(recv)方向的状态。 特别说明的是,socket的状态其实分好几种。

怎样查看一个通过accept()连接的套接字是否还处于连接状态?
m_sConnected.GetSockName(strIP,port);m_sConnected.GetPeerName(ip,por);m_sConnected是套接字,这两个函数上面是用来获取服务器IP和端口的 下面是用来获取客户端IP和端口的,如果能成功或者那么就是出于连接状态。

VC 为什么我获取客户端ip地址总是:204.204.204.204
我们呼叫 gethostname(),得到的答案是 「vincent」;而 Client 呼叫 getsockname() 得到自己的 IP 位址是 「140.92.61.24」,port number 是 「2110」(笔者以前曾提过,由系统主动指定的 port number 会介於 1024 到 5000 间);再呼叫 getpeername() 得到与 Client 连接的 Server 端 IP ...

为什么获取客户端ip地址总是:204.204.204.204
204换成16进制是0xcc,我记得这是vc初始化堆栈的时候使用的数据 也就是说你accept没有成功,所以里面没数据。我知道你进行了出错判断,判断accept有没有成功。但是很可惜,accept失败的时候并不是返回NULL 它返回的是 (SOCKET) -1 (或者写 ~0 也一样)...

系统调用socket控制
11. 获取socket信息: getsockname()和getpeername()函数分别获取本地和远程Socket的地址信息。12. 设置端口参数: getsockopt()和setsockopt()用于查询和设置Socket的配置选项,如超时时间、数据缓冲区大小等。13. 文件与端口传输: sendfile()函数允许在文件和Socket之间高效地传输数据。14. 创建对等连接: ...

相似回答