【socket】获取客户端IP
来源:互联网 发布:12口网络配线架 编辑:程序博客网 时间:2024/06/05 04:08
from:http://blog.sunshow.net/2009/07/get-client-ip-from-socket/
有两种方法,一种是在accept的时候获取,一种是通过getpeername获取
#include <sys/socket.h>
int accept(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);
int getpeername(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);
int accept(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);
int getpeername(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);
两者区别主要在取IP的fd不一样,前者是在监听的fd,后者是在连接建立的fd
struct 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);
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转换
#include <arpa/inet.h>
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
printf("%s\n", inet_ntoa(addr));
- 【socket】获取客户端IP
- socket获取客户端ip例子
- Socket获取客户端IP地址及端口号
- socket编程之---------获取客户端主机名和IP地址
- Socket获取客户端IP地址及端口号
- linux 使用c在tcp socket服务器端获取客户端ip
- 获取客户端IP地址
- 获取客户端ip
- 获取客户端ip
- 获取客户端IP
- 获取客户端IP
- 获取客户端ip地址
- 获取客户端IP
- 获取客户端IP地址
- java获取客户端ip
- cxf获取客户端Ip
- 获取客户端ip
- 客户端获取IP
- vmware下配置Linux上网
- USB主机控制器(Host Controller)--深入理解
- Fedora9.0上网配置
- 黑马程序员c#学习2
- 改善型需求搅热年尾楼市
- 【socket】获取客户端IP
- 每日一Lua(1)基础知识
- Hibernate 所有缓存机制详解
- 黑马程序员c#学习3
- 浅析Java的equals方法
- XBMC皮肤开发手册
- java写入excel2007的操作
- Hibernate测试
- 黑马程序员c#学习4