python – 防止端口被其他应用程序“窃取”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 防止端口被其他应用程序“窃取”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1948字,纯文字阅读大概需要3分钟。
内容图文
我有一个类似守护进程的小应用程序,它侦听特定端口,所以不同的应用程序使用相同的端口,不知何故将它从我的应用程序中取出.
在启动其他应用程序之前一切正常,一旦我启动它我不再获得连接,但在关闭它之后,守护程序继续工作.我不知道可以使用端口,而另一个应用程序正在监听它,并希望尽可能防止这种情况发生.
有趣的是,当干扰应用程序已经运行时重启守护进程时,甚至没有异常,它可以在该端口上创建,绑定和侦听,它根本不能正常工作.
这将是主循环代码:
if __name__ == '__main__':
print "Daemon PID:", os.getpid()
server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
server.bind(('localhost', local_port))
server.listen(10)
print "Server listening on:", server.getsockname()
while True:
thread.start_new_thread(handle_client, server.accept())
(local_port和handle_client是事先定义的,应该与问题无关,系统是Debian GNU / Linux 7,Python版本是2.7.3)
所需的其他信息:
运行守护进程:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 25422/python
运行守护进程和VLC
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 25422/python
tcp6 0 0 :::9000 :::* LISTEN 25447/vlc
tcp6 0 0 ::1:9000 ::1:46156 ESTABLISHED 25447/vlc
tcp6 0 0 ::1:46157 ::1:9000 ESTABLISHED -
tcp6 0 0 ::1:46156 ::1:9000 ESTABLISHED -
tcp6 0 0 ::1:9000 ::1:46157 ESTABLISHED 25447/vlc
所以问题似乎是同时运行TCP和TCP6.还注意到,如果我第一次启动VLC,然后尝试运行我的守护进程,我确实得到了预期的错误,因为在这种情况下,VLC也抓住了TCP套接字.
解决方法:
因此,您的守护程序仍在IPv4上运行,而VLC在IPv6上运行.如果尝试连接到它的应用程序只尝试IPv4,它将连接到守护进程;我猜这个应用程序首先尝试使用IPv6,而仅使用IPv4作为后备.您可以通过使用AF_INET6和’ip6-localhost’打开IPv6端口而不是(或除此之外)守护程序中的IPv4端口来解决您的问题.
内容总结
以上是互联网集市为您收集整理的python – 防止端口被其他应用程序“窃取”全部内容,希望文章能够帮你解决python – 防止端口被其他应用程序“窃取”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。