Python套接字 – 保持套接字活着吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python套接字 – 保持套接字活着吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1612字,纯文字阅读大概需要3分钟。
内容图文
![Python套接字 – 保持套接字活着吗?](/upload/InfoBanner/zyjiaocheng/828/81138a9bff744dfca5d870438eee7a2e.jpg)
我在Python中使用套接字有点麻烦.每当有人连接它工作正常但如果他们断开连接服务器程序关闭.我希望服务器程序在客户端关闭后保持打开状态.我正在使用while循环来保持连接活动但是一旦客户端关闭连接,服务器就会关闭它的连接.
这是客户:
import socket, sys
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = sys.argv[1]
port = int(sys.argv[2])
conn.connect((host, port))
print("Connected to host " + sys.argv[1])
td = 1
while td == 1:
msg = raw_input('MSG: ')
这是服务器:
import socket, sys
socket.setdefaulttimeout(150)
host = ''
port = 50005
socksize = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
print("Server started on port: %s" % port)
s.listen(1)
print("Now listening...\n")
conn, addr = s.accept()
while True:
print 'New connection from %s:%d' % (addr[0], addr[1])
data = conn.recv(socksize)
if not data:
break
elif data == 'killsrv':
conn.close()
sys.exit()
else:
print(data)
最佳答案:
如果客户端关闭连接,您希望它关闭套接字.
看来这里有一点脱节,我会试着详细说明.当您创建套接字,绑定和监听时,您已经为其他人建立了一扇敞开的大门,并与您建立联系.
一旦客户端连接到您,您使用accept()调用来接受连接并获得一个新的套接字(conn),它将返回给您与客户端进行交互.您的原始侦听套接字仍处于活动状态,您仍然可以使用它来接受更多新连接.
查看代码,您可能希望执行以下操作:
while True:
print("Now listening...\n")
conn, addr = s.accept()
print 'New connection from %s:%d' % (addr[0], addr[1])
data = conn.recv(socksize)
if not data:
break
elif data == 'killsrv':
conn.close()
sys.exit()
else:
print(data)
请注意,这只是一个起点,正如其他人所建议的那样,您可能希望使用select()以及分离进程或生成线程来为每个客户端提供服务.
内容总结
以上是互联网集市为您收集整理的Python套接字 – 保持套接字活着吗?全部内容,希望文章能够帮你解决Python套接字 – 保持套接字活着吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。