我有一个关于TCP/IP网络上的客户端套接字的问题.让我说我用
try:
comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
comSocket.bind(('', 5555))
comSocket.connect()
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
Run Code Online (Sandbox Code Playgroud)
创建的套接字将绑定到端口5555.问题是在结束连接后
comSocket.shutdown(1)
comSocket.close()
Run Code Online (Sandbox Code Playgroud)
使用wireshark,我看到两侧的FIN,ACK和ACK关闭了套接字,我无法再次使用该端口.我收到以下错误:
[ERROR] Address already in use
Run Code Online (Sandbox Code Playgroud)
我想知道如何立即清除端口,以便下次我仍然可以使用相同的端口.
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Run Code Online (Sandbox Code Playgroud)
setsockopt似乎无法解决问题谢谢!
所以我正在努力学习d3,wiki建议这样做
要在本地查看示例,您必须具有本地Web服务器.任何Web服务器都可以工作; 例如,您可以运行Python的内置服务器:
python -m SimpleHTTPServer 8888 &
很棒...只是现在我有一台服务器正在运行...但在某些时候我想我应该再次关闭它.
关闭它比使用更好的方法kill <pid>吗?对于一份小工作来说,这似乎是一件大事.
(我正在运行Mac OS 10.6.8(Snow Leopard))
FWIW:ctrl+c提供大约10行追溯,抱怨被打断.
kill -3 <pid> 在一个单独的窗口中发出一个Finder警告'Python意外退出'.
默认kill <pid>并且kill -15 <pid>相对干净(而且简单).
我HTTPServer在一个单独的线程中运行我(使用无法停止线程的线程模块...)并希望在主线程也关闭时停止提供请求.
Python文档声明它BaseHTTPServer.HTTPServer是一个子类SocketServer.TCPServer,它支持一个shutdown方法,但它缺少HTTPServer.
整个BaseHTTPServer模块的文档很少:(