[英]Python Problem With sockets
嗨,我尝试用python创建一个简单的Telnet服务器,但是服务器仅接收客户端发送的一条命令...代码:
from socket import *
server = socket(AF_INET, SOCK_STREAM)
server.bind((gethostname(), 23))
server.listen(5)
while 1:
(connection, address) = server.accept()
data = connection.recv(1024)
print data
if data=='X':
break
connection.close()
将server.accept置于while循环之外,将允许您的客户端发送更多命令:
from socket import *
server = socket(AF_INET, SOCK_STREAM)
server.bind((gethostname(), 23))
server.listen(5)
(connection, address) = server.accept()
while 1:
data = connection.recv(1024)
print data
if data=='X':
break
connection.close()
这样做还有两个问题:您的服务器仅允许一个客户端。 只要连接了一个客户端,其他客户端就无法连接。 您可以通过使用线程(可能会很棘手)或使用select模块来解决此问题。
telnet发送换行符,因此数据永远不会是“ X”。 您可以检查if data.strip() == 'X':
另外,如果您的客户端断开连接,则数据将为空字符串。 因此,您可能也想添加其他检查:
if not data:
break
收到一堆数据后,您将其打印出来,然后接受一个新的客户端。 因此,不再使用旧客户端的套接字。
将data
读入data
变量后,便进行打印,如果data
与“ X”不同,则connection
超出范围并关闭。
您需要将该connection
存储在某个位置,然后在真正需要时关闭它(我想客户端何时发送“退出” ...)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.