telnet サーバーを作成するために見つけたコードを使用して、Python ソケットを操作します。サーバーコードは正常に動作します。文字の問題を回避するために、クライアントとの間で 16 進文字列を送信する必要があります。次のようにクライアントにデータを送信すると:
conn.sendall('\x74\x65\x73\x74\x31\x32\x33\x0D\x0A')
また
test_var = '\x74\x65\x73\x74\x31\x32\x33\x0D\x0A'
conn.sendall(test_var)
それは完璧に機能します。文字列を作成して変数に格納しようとすると(次のような):
def recover_raw_data(data):
data_list = []
hex_list = []
for items in data:
data_list.append(ord(items))
for items in data_list:
hex_list.append("\\")
value = '%02X' % int(items)
hex_list.append("0x" + value)
print hex_list
almost_final_data = "".join(hex_list)
just_about_final_data = almost_final_data.replace('\\0x', '\\x')
final_data = just_about_final_data
print final_data
conn.sendall(final_data)
return()
この混乱の出力を印刷すると、正しいように見えます。Wireshark のキャプチャでは、ASCII ではなく文字どおりにパケットが送信されていることがわかります...
例えば\x31\x32\x33\x34\x35\x0D\x0A
私は .encode と、Google で見つけた他の多くのアイデアを試しました...機能する変数から文字列を作成できないのはなぜだろうか...どんな助けも大歓迎です。