LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1168|回复: 1

网络编程中遇到的问题,代理服务器如何获得与客户端建立连接的本地IP?

[复制链接]
发表于 2005-10-7 16:25:33 | 显示全部楼层 |阅读模式
我在写一个简单的Socks 5代理服务器,
在处理UDP请求的时候需要把本地IP,和绑定的端口发送回给客户端

于是我在获取本地IP的地方遇到了难题。

因为代理服务器往往是多IP的,建立监听套接字时,指定的IP是0,即准备由操作系统决定。
但是,客户端只能与代理服务器的某个IP建立连接,我想得到的就是这个IP地址。

Socks 5 的开头部分是TCP连接,
于是我调用了函数 getsockname 分析与客户端建立连接的套接字描述符connfd,
发现获得的本地IP是0,即是建立监听套接字是指定的IP。

如果用 gethostname , 那么对于多IP地址的代理服务器来说,也无法确定客户端与代理服务器建立的连接是基于哪个IP

关于端口的获得,在本地创建一个UDP套接字,绑定的IP和端口都是0,即还是由操作系统决定。但是,我可以通过 getsockname 获得端口号,但是我却无法获得IP地址(即是0)

因此这个问题,很使我困惑,在这里诚心请教大家。
发表于 2005-10-8 12:51:12 | 显示全部楼层
用sysctl获得每个接口及其IP地址, 查看unp v1 p459
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表