[英]python async socket client
我正在嘗試在python中創建套接字客戶端,我可以發送第一條消息,沒有錯誤,但是當我嘗試發送第二條消息時,它停滯了,有人可以為此提供幫助嗎?
import socket , time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def OpenConnection(IP,PORT):
global sock
sock.connect((IP, PORT))
def SendMessage(StringMessage):
global sock
print "Step 1"
sock.send(StringMessage)
print "Step 2"
reply = sock.recv(1024) # limit reply to 1024K
print StringMessage
return reply
def CloseConnection():
global sock
sock.close()
HOST, PORT = 'localhost', 34567
OpenConnection(HOST,PORT)
print SendMessage('test1')
print "Sleep for 3"
time.sleep(3)
print "Sendind Second Message.."
print SendMessage('test2')
CloseConnection()
您的代碼對我有用-您正在連接的服務器是否將任何東西發回? 我使用netcat偵聽端口34567。這是第一次運行程序后的服務器輸出:
$ nc -l 34567
test1
這是客戶
$ python socktimeout.py
Step 1
Step 2
此時,客戶sock.recv(1024)
在sock.recv(1024)
調用中等待服務器的響應。 鍵入一條消息(例如“ TEST”)並在服務器窗口中按Enter鍵即可繼續執行代碼。 現在服務器看起來像這樣:
$ nc -l 34567
test1TEST
test2
和客戶:
$ python socktimeout.py
Step 1
Step 2
test1
TEST
Sleep for 3
Sendind Second Message..
Step 1
Step 2
再次輸入消息並按Enter,將允許您的程序完成並關閉連接。
請注意,僅需要按回車鍵,因為netcat正在對輸入進行行緩沖,如果您的服務器正在使用其他進程發送回數據,則不需要在消息末尾附加一行(盡管這可能是一個好主意,具體取決於根據您的協議)。
編輯
這是發送回另一條消息后的最終服務器狀態:
$ nc -l 34567
test1TEST
test2TEST
$
這是客戶:
$ python socktimeout.py
Step 1
Step 2
test1
TEST
Sleep for 3
Sendind Second Message..
Step 1
Step 2
test2
TEST
$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.