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