Python中文
首页
教程
问答
标签
搜索
登录
注册
在Python中关闭/重新启动套接字
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我将要做一个使用PagSeguro(巴西“PayPal”)的简单测试,为此我下载了他们的Python服务器,在我的本地主机上进行测试。我在一个Mac上工作,有一个XAMPP服务器(在我的过程中,Apache和MySQL部分打开)。</p> <p>对于了解Python和sockets等的人来说,我的问题应该非常简单,而且我在信息搜索中发现了很多线索。然而,由于我自己在这方面的知识贫乏,我无法把两个和两个一起修复它。</p> <p>简短的问题:如何在程序关闭套接字之前将其退出的套接字(从终端)释放出来。Alt-当我想关闭套接字并停止/重新启动服务器时,如何创建一个Python函数供我调用。</p> <p>情景: 我启动服务器(在终端中使用#:sudo python./PagSeguroServer.py),它运行良好,我做了一些我想做的测试。然后,我需要更改服务器的一些设置,要使其正常工作,我需要重新启动服务器。我通过关闭终端窗口解决了这个问题,但是当我重新打开并键入相同的命令来再次启动服务器时,我得到了“socket.error:[Errno 48]地址已经在使用中”。好的,我知道为什么,但不知道如何修复,所以我用谷歌搜索,然后找到要添加的提示</p> <pre><code>socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) </code></pre> <p>在密码里。查看了Python类,并试图将其放在我所知的地方(如下所示)。但是,没有解决我的问题。因为我的“搜索和拼图”似乎无法帮助我-我现在放弃它,并张贴这个定制的问题,而不是!</p> <p>这是服务器代码的一部分:</p> <pre><code>class SecureHTTPServer(HTTPServer): '''Servidor HTTPS com OpenSSL.''' def __init__(self, server_address, HandlerClass,fpem): BaseServer.__init__(self, server_address, HandlerClass) ctx = SSL.Context(SSL.SSLv23_METHOD) ctx.use_privatekey_file (fpem) ctx.use_certificate_file(fpem) self.socket = SSL.Connection(ctx, socket.socket(self.address_family, self.socket_type)) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_bind() self.server_activate() .... def run(HandlerClass = HTTPSHandler, ServerClass = SecureHTTPServer): '''Roda o servidor''' server_address = ('', 443) # (address, port) httpd = ServerClass(server_address, HandlerClass, fpem) httpd.serve_forever() if __name__ == '__main__': run() </code></pre> <p>注意:有一次我真的成功地重新打开了它-那是在我添加setsockopt调用之前,我感觉到套接字在超时后关闭了-请在某个地方阅读。不过,这种情况似乎不会再发生了——已经等了好几次了。</p> <p>编辑:最后这就是我的解决方法:需要终止保存套接字的python进程(请参阅jd的答案注释),然后添加<a href="https://www.cnpython.com/pypi/keyboard" class="inner-link">keyboard</a>Interrupt catch以正确关闭套接字。谢谢大家!</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以创建一个正确关闭套接字的函数,并使用<code>atexit.register()</code>将其注册为在程序终止时运行。见<a href="http://docs.python.org/library/atexit.html" rel="nofollow">http://docs.python.org/library/atexit.html</a></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
plt.savefig不会覆盖现有文件
9 回答
plt.savefig不保存图像
8 回答
plt.savefig在jupyter笔记本中不起作用
3 回答
plt.savefig在从另一个fi调用时停止工作
2 回答
plt.savefig在调用plt.show之前保存空数字
1 回答
plt.save不创建png文件
9 回答
plt.scatter overlay分类数据帧列
7 回答
Plt.Scatter:如何添加title、xlabel和ylab
2 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
8 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
6 回答
plt.set_title()中的标题字符串有误
1 回答
plt.show()
8 回答
plt.show()不在Jupyter笔记本上渲染任何内容
3 回答
plt.show()不打印plt.plot only plt.scatter
7 回答
plt.show()不显示三维散射图像
9 回答
plt.show()不显示任何内容
4 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
1 回答
plt.show()使终端挂起
10 回答
plt.show()无法使用此代码
2 回答
plt.show()没有打开新的图形风
10 回答