Chinaunix
标题:
在build g-bios 时遇到的一个错误(Fixed)
[打印本页]
作者:
tigermmx
时间:
2009-05-28 15:20
标题:
在build g-bios 时遇到的一个错误(Fixed)
名位在使用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)
下载附件
2009-05-28 15:20 上传
作者:
dsdsdds
时间:
2009-06-09 11:16
不错
作者:
我是8戒
时间:
2009-06-09 11:32
标题:
熟悉的配置窗口界面
熟悉的配置窗口界面
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2