1

現在、 Parallels PVA XML APIにパケットを送信するために以下のコードを実装しています。2 つのXML パケットをサーバーに送信しようとしています。1 つ目はユーザーの資格情報を指定するログイン パケットで、2 つ目は API 要求に関する情報を含むパケットです。これらのパケットはヌル バイトで区切られているはず\0です。通常、サーバーは複数のパケットを返します。最初のパケットはログインが成功したことの説明であり、2 番目のパケットには API 要求に関する情報が含まれています。

私が抱えている問題は、2 番目のパケットが送信されていないように見えることです。返される唯一の応答は、ログインが成功したことを明確にする最初のパケットですが、API 要求に関する情報を含むパケットは返されません。これはnullバイトを送信しているせいかもしれないと思ったので、すべてbase64でエンコードしてみましたが、同じ結果になりました。

そのため、接続が閉じられていて、サーバーが2番目のパケットを送信するのに十分な時間を取得していないか、ヌルバイトのためにパケットが完全に無視されているようです。

ヘルプやコメントは大歓迎です。前もって感謝します!

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_ADDRESS]」に置き換えられているため、意図的にパケットに情報が含まれていないことに注意してください。

4

2 に答える 2