当前位置: 技术问答>linux和unix
网络编程如何获知自己的ip地址?
来源: 互联网 发布时间:2015-10-22
本文导语: 我做的是网络服务器部分。 可能有多个ip地址 不同的client 连接不同的服务器ip int listenfd, connfd; socklen_t len; struct sockaddr_in servaddr, cliaddr; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servad...
我做的是网络服务器部分。
可能有多个ip地址 不同的client 连接不同的服务器ip
int listenfd, connfd;
socklen_t len;
struct sockaddr_in servaddr, cliaddr;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(1865); /* daytime server */
bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
listen(listenfd, LISTENQ);
for ( ; ; )
{
len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &len);
server_date *mydate = new server_date;
mydate->cliaddr = cliaddr;
mydate->server = servaddr;
mydate->connfd = connfd;
pthread_t pid;
pthread_create(&pid, NULL, Pth_ChatServer , (void *) mydate);
delete mydate;
}
connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &len); 可以获取客户端的ip
如何获取此时自己是那个ip地址呢?
servaddr 内的ip 地址是0.0.0.0
....
可能有多个ip地址 不同的client 连接不同的服务器ip
int listenfd, connfd;
socklen_t len;
struct sockaddr_in servaddr, cliaddr;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(1865); /* daytime server */
bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
listen(listenfd, LISTENQ);
for ( ; ; )
{
len = sizeof(cliaddr);
connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &len);
server_date *mydate = new server_date;
mydate->cliaddr = cliaddr;
mydate->server = servaddr;
mydate->connfd = connfd;
pthread_t pid;
pthread_create(&pid, NULL, Pth_ChatServer , (void *) mydate);
delete mydate;
}
connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &len); 可以获取客户端的ip
如何获取此时自己是那个ip地址呢?
servaddr 内的ip 地址是0.0.0.0
....
|
getsockname??
|
应该调用getsockname