我目前正在實施下面的代碼發送數據包到Parallels PVA XML API。我正嘗試向服務器發送兩個 XML數據包。第一個是指定用戶憑證的登錄數據包,第二個是包含有關API請求信息的數據包。這些數據包應該被空字節\0
分開。通常,服務器發回多個數據包,第一個是澄清登錄成功,第二個包含有關API請求的信息。Python套接字 - 發送數據包到服務器並等待響應
我遇到的問題是,它似乎沒有發送第二個數據包。我回來的唯一答案是第一個明確說明登錄成功的數據包,但我沒有找回包含有關API請求信息的數據包。我認爲這可能是因爲我發送了一個空字節,所以我嘗試在base64中對所有內容進行編碼,但我最終獲得了相同的結果。
那麼在我看來,連接正在關閉,服務器沒有足夠的時間發送第二個數據包,或者數據包由於空字節而被完全忽略。
任何幫助或意見將不勝感激。先謝謝你!
import socket
import base64
def client(string):
HOST, PORT = '[IP_ADDRESS]', 4433
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect((HOST, PORT))
sock.send(base64.b64encode(string))
reply = sock.recv(131072)
sock.close()
return reply
packet = "<packet></packet>\0<packet></packet>"
print client(packet)
請也不是說在故意包沒有任何信息,因爲它包含敏感信息,IP地址是由「[IP地址]」取代故意
什麼是服務器協議? – Anzel 2014-11-05 22:42:03
@Anzel ** TCP ** - 客戶端/服務器協議 – Raffi 2014-11-05 22:49:37
空字節跳過您的整個** 131072 **字節發送,因此第二部分永遠不會到達。提供的答覆 – Anzel 2014-11-05 23:39:38