有两种方法,一种是在accept的时候获取,一种是通过getpeername获取
|
|
两者区别主要在取IP的fd不一样,前者是在监听的fd,后者是在连接建立的fd123456789101112131415struct sockaddr_in addr;socklen_t addr_len;int32_t listen_fd, sock_fd;/* create listening port */addr_len = sizeof(addr);memset(&addr, 0, addr_len);sock_fd = accept(listen_fd, (struct sockaddr *)&addr, &addr_len);printf("%d\n", addr.sin_addr.s_addr);memset(&addr, 0, addr_len);getpeername(sock_fd, (struct sockaddr *)&addr, &addr_len);printf("%d\n", addr.sin_addr.s_addr);
当然这种长整型格式的IP不一定是我们想要的,可以通过inet_ntoa转换
|
|
|
|