【起因】
同事要参考我写的一个项目的效果,在本机发布以后发现通过局域网IP无法访问,但是localhost和127.0.0.1可以访问
【经过】
配置tomcat的server.xml, 更改connector配置, 端口不用改, 加上address="0.0.0.0", 使其绑定到IPv4, 如下
(借鉴的解决方案)
<1>使用cmd命令netstat -n, 查看tomcat地址绑定, 发现是绑定到127.0.0.1
<2>配置tomcat的server.xml, 更改connector配置, 端口不用改, 加上address="0.0.0.0", 使其绑定到IPv4
<Connector port="8080" maxHttpHeaderSize="8192" address="0.0.0.0"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<3>重启tomcat, 再次使用netstat -n, 查看tomcat地址绑定, 已变为IPv4.
【结果】
可以通过局域网IP访问了。
楼主对于os.system方法理解有误,不是你PING不通才返回的0,os.system只是帮你执行命令而已,如果这个命令是有效的他返回0,如果无效则返回1,你可以试试os.system('abc')他是返回1的(因为abc这个命令是无效的),对于你的PING命令来说,只要他能成功执行无论PING通不PING通他都会返回0.
你要测试网络是否通不能采用这种方式,应该使用PYTHON自带的库。
方法一可能有的获取不到ip(比如没有正确设置up名称)
方法一
import socket
#获取计算机名称
hostname=socket.gethostname()
#获取本机IP
ip=socket.gethostbyname(hostname)
print(ip)
方法二
import socket
def get_host_ip():
"""
查询本机ip地址
:return:
"""
try: s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))
ip=s.getsockname()[0]
finally:
s.close()
return ip
if __name__ == '__main__':
print(get_host_ip())