方正宽带需要用客户端登陆才能上网,可是他们又没有支持linux的客户端,我只好用wine了,可是装上之后发现这个客户端运行第一步要先获取网络相关参数比如ip地址,网关地址,掩码什么的,虽然我已经配置了网关,这个跑在wine上的客户端却没取到,所以总是提示我网络参数没配好,哪位高手知道如何解决这个问题吗?
另,我发现方正宽带为了防止私装路由器,在这个客户端程序里做了个端口检查,只要发现机器配置了多于1个ip端口就不做连接,不管你是否真正用它作路由器,有什么方法别让它查到其他端口呢?
[问题]哪位在用方正宽带上网?
-
- 帖子: 19
- 注册时间: 2006-12-27 23:54
-
- 帖子: 19
- 注册时间: 2006-12-27 23:54
哈哈,问题解决了
仔细研究了一下wine和win32的代码,发现原来客户端程序里调用了一个叫GetAdaptersInfo的win32函数,这个函数wine做了buildin,也就是说wine开发组的牛人们自己实现了win32里的iphlpapi.dll,这样在运行windows的程序的时候真正运行的其实是wine的buildin dll,并不是win32的dll,这样只要找到这个buildin的函数所在的源码文件,按所期望的运行结果修改一下,就应该可行,沿着这样的思路,我下载了9.29的源码,找到了这个程序:iphlpapi_main.c,仅仅使用wine提供的TRACE类就可以调试代码了,GetAdaptersInfo 这个函数在XP下能够返回系统配置的网关地址,可是在wine下却取不到配好的网关地址,我试了试GetIpForwardTable,还是不行,这个函数返回的好像是机器的IP跟掩码与后的一个IP,比如我的机器IP是192.168.1.102,掩码是255.255.255.0,它就返回192.168.1.0,可是网关配的是192.168.1.1,找了好半天没找到到底网关的参数放在哪里,我一着急,干脆就用了一个小trick,用memcpy把机器的IP截取到前3位,最后一位写死成1,很不专业哦:),哪位高手知道wine里边怎样能找到系统配置好的网关地址,告诉我吧,这厢有礼了。最后就是编译,把生成的iphlpapi.dll.so文件拷到/usr/lib/wine下边,连线,ok,终于让我的ubuntu重新回到网络世界.....
回想起来,其实就是这个可恶的方正宽带,一根线就只让一台机器上网,还不提供linux的客户端给弄的,真想加张网卡运行个网关程序,好让我的本本也能上网。
回想起来,其实就是这个可恶的方正宽带,一根线就只让一台机器上网,还不提供linux的客户端给弄的,真想加张网卡运行个网关程序,好让我的本本也能上网。
- nihui
- 帖子: 1746
- 注册时间: 2006-10-21 12:03
- 来自: Shanghai
- 联系:
- huangjiahua
- 帖子: 3294
- 注册时间: 2005-03-30 0:27
- 联系: