繁体   English   中英

套接字的Python问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM