getsockname和getpeername函数】的更多相关文章

UNIX网络编程--getsockname和getpeername函数   来源:网络转载   http://www.educity.cn/linux/1241293.html     这两个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址即得到对方的地址(getpeername). #include <sys/socket.h> int getsockname(int sockfd,struct sockaddr* localadd…
这2个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址(getpeername) int getsockname(int sockfd, struct sockaddr* localaddr, socklen_t * addrlen); int getpeername(int sockfd, struct sockaddr * peeraddr, socklen_t * addrlen); 这2个函数的最后一个参数都是值-结果参数,这就…
最近阅读UNIX网络编程第四章时,书本末尾介绍了两个函数getsockname()和getpeername(),可以用于获取服务器端和客户端的IP地址与端口,原本很简单的两个函数,过一眼即明白函数的用法,但在实际编程测试中,却出现了一个让人意外的结果,如下图所示: 这两个函数在第一个客户连接时解析出的IP地址和端口全部为0,出乎我的期望.而在后面的客户连接时,打印出的IP地址和端口却是正确的. 下面先给出客户端和服务端的代码: 客户端: #include <netinet/in.h> #inc…
一.gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息.gethostname:获取主机的名字gethostbyname:通过名字获取其他的信息(比如ip) 1.gethostname:man手册里面的解释(部分):       #include <unistd.h>       int gethostname(char *name, size_t len);       int sethostname(const char *name, size_t…
本文主要介绍了getsockname()和getpeername()的内核实现. 内核版本:3.6 Author:zhangskd @ csdn blog 应用层 int getsockname(int s, struct sockaddr *name, socklen_t *namelen); Get the current name for the specified socket. 获取本地套接口的名字,包括它的IP和端口. int getpeername(int s, struct so…
在两台计算机上建立一个网络连接,需要五个要素:本机地址 本机端口 协议类型 远端端口 远端地址.那么如何从一个建立好的连接上获取这些信息呢.就需要用到 getsockname  和 getpeername 这两个函数. 但前提是要在建立好的连接上. 作为客户端,要在正确调用connect()之后,才能使用这两个函数 作为服务端,要在正确调用accept()之后,才能使用这两个函数 以下为测试代码, windows/linux 下均可编译运行. #include <stdint.h> #incl…
getsockname和getpeername #include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen);返回:0—OK,-1—出错. getsockname函数返回与套接口关联的本地协议地址. getpee…
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen); getsockname() returns the current address to which the socket sockfd is bound,in the buffer pointed to by addr. The addrlen argument should be initialized to indicate the amount…
对于server端: 以端口为通配符方式bind:对于服务器,bind(0,ip),则调用bind函数之后,就可以调用getsockname获取服务器得到的本地端口号 以ip地址为通配地址bind,只有accept返回之后,调用getsockname(connfd,......)才会返回服务器得到的本地ip地址 对于client端: 由于不绑定bind,所以当connect()函数成功之后(完成三次握手),可以调用getsockname可以得到本地端口号和ip地址 getpeername():…
int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);  // 获取与某个套接字关联的本地协议地址 int getpeername(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);  // 获取与某个套接字关联的外地协议地址 struct sockaddr { unsigned short sa_family; //地址族, 一…