私の問題: ネットワーク経由でメッセージを送信するために、基本的にソケットを使用する小さなチャット プログラムを作成しました。
うまく機能しますが、さらに一歩進めることにしたとき、問題が発生しました。
ネットワーク経由で送信する文字列に暗号化を追加することにしたので、先に進み、それを行うスクリプトを作成しました。
問題は、文字列の場合とは異なり、ソケットを介して辞書を送信することは明らかにできないことです。
私は最初にいくつかの調査を行い、ピクルスについてこのようなものを見つけました. 残念ながら、辞書をファイルにエクスポートする以外に、それらを使用して文字列を変換する方法を正確に見つけることができませんでしたが、プログラムを変更せずにそれを行うことはできません.
私がこれを行う方法を説明できる人はいますか? 私はあちこちを見回しましたが、方法を見つけることができないようです。
私がこれまでに得たものをここにアップロードしました。
print("\n\t\t Fill out the following fields:")
HOST = input("\nNet Send Server Public IP: ")
PORT = int(input("\nNet Send Server Port: "))
#------------------------------------------------
#Assessing Validity of Connection
#------------------------------------------------
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((HOST,PORT))
print("Connected to server:",HOST,)
except IOError:
print("\n\n\a\t\tUndefined Connection Error Encountered")
input("Press Enter to exit, then restart the script")
sys.exit()
#-------------------------------------------------
#Now Sending and recieving mesages
#-------------------------------------------------
i = True
while i is True:
try:
User_input = input("\n Enter your message: ")
Lower_Case_Conversion = User_input.lower()
#Tdirectory just stores the translated letters
Tdirectory = []
# x is zero so that it translates the first letter first, evidently
x = 0
COUNTLIMIT = len(Lower_Case_Conversion)
while x < COUNTLIMIT:
for letter in Lower_Case_Conversion[x]:
if letter in TRvalues:
Tdirectory += [TRvalues[Lower_Case_Conversion[x]]]
x = x + 1
message = input('Send: ')
s.send(message.encode())
print("\n\t\tAwaiting reply from: ",HOST,)
reply = s.recv(1024)
print(HOST,"\n : ",reply)
except IOError:
print("\n\t\aIOError Detected, connection most likely lost.")
input("\n\nPress Enter to exit, then restart the script")
ああ、TRvalues とは何か疑問に思っているなら。簡単なメッセージを暗号化するための「翻訳」を含む辞書です。
try:
TRvalues = {}
with open(r"C:\Users\Owatch\Documents\Python\FunStuff\nsed.txt", newline="") as f:
reader = csv.reader(f, delimiter=" ")
TRvalues = dict(reader)
(翻訳は、インポートする .txt に保持されます)