免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2373 | 回复: 2
打印 上一主题 下一主题

在build g-bios 时遇到的一个错误(Fixed) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-28 15:20 |只看该作者 |倒序浏览
名位在使用gbios时有没有遇到这种情况 在配置gbios时,如果主机端没有设置IP地址(eth0),
运行./build 产生Makefile 文件时 会出现以下的错误:


Traceback (most recent call last):
  File "./build", line 284, in <module>
    hello = MainWin()
  File "./build", line 186, in __init__
    self.entServer.set_text(self.default_server_ip())
  File "./build", line 75, in default_server_ip
    DEF_SVR_IP = self.get_ip_address('eth0')               
  File "./build", line 59, in get_ip_address
    struct.pack('256s', ifname[:15])
IOError: [Errno 99] Cannot assign requested address



根据错误提示信息,错误是发生在 build文件里的一个叫  get_ip_address 函数里,
该函数的具体描述如下:

    def get_ip_address(self, ifname):
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
        )[20:24])

经过查找,错误是由 fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s',ifname[:15])这句话引起的。


注意 “IOError: [Errno 99] Cannot assign requested address”错误信息,显然这是python的一个错误异常。
我们知道c++里在发生错误的时候,经常会采用丢出异常信息来处理相应的错误,莫非python也类似于C++的错误异常捕获机制。


于是我对这部分代码作如下修改:

    def get_ip_address(self, ifname):
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        try:
            localIP=fcntl.ioctl(
                s.fileno(),
                0x8915,  # SIOCGIFADDR
                struct.pack('256s', ifname[:15])
                )
        except IOError:
            return "192.168.0.10"
        return socket.inet_ntoa(localIP[20:24])


ok, 一切大功告成。

跳出了我们熟悉的配置窗口界面。
如下图:

g-bios_build.jpg (33.49 KB, 下载次数: 21)

g-bios_build.jpg

论坛徽章:
0
2 [报告]
发表于 2009-06-09 11:16 |只看该作者
不错

论坛徽章:
0
3 [报告]
发表于 2009-06-09 11:32 |只看该作者

熟悉的配置窗口界面

熟悉的配置窗口界面
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP