Senden Sie ein Wörterbuch mit Hilfe von Sockets in Python?
Mein problem: Ok, ich habe ein kleines chat-Programm, was, wo bin ich grundsätzlich mit Hilfe von sockets zum senden von Nachrichten über ein Netzwerk.
Funktioniert es Super, aber wenn ich mich entschieden habe, es zu nehmen ein Schritt weiter, ich lief in ein problem.
Beschloss ich, fügen Sie einige Verschlüsselung an den Saiten war ich das senden über das Netzwerk, und so ich ging voran und schrieb das Skript, das das getan hat.
Das problem ist, dass anscheinend können Sie nicht nur senden Sie ein Wörterbuch über sockets, wie Sie vielleicht mit einer Schnur.
Habe ich einige der Forschung zuerst, und ich fand dieses Zeug über Gurken. Leider konnte ich nicht herausfinden, wie genau ich könnte Sie verwenden, um konvertieren von Zeichenfolgen, abgesehen davon, dass er es den Export des Wörterbuchs in eine Datei, aber ich kann das nicht tun, ohne änderung meines Programms.
Kann mir jemand erklären, wie ich bin, dies zu tun? Ich habe sah überall herum, aber ich kann nicht scheinen, um herauszufinden, wie.
Habe ich hochgeladen, was ich habe, so weit hier, wenn das kommt, interessiert das niemanden.
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")
Oh, und wenn Ihr Fragen, was TRvalues ist. Es ist das Wörterbuch mit den 'übersetzungen' für die Verschlüsselung von Nachrichten einfach.
try:
TRvalues = {}
with open(r"C:\Users\Owatch\Documents\Python\FunStuff\nsed.txt", newline="") as f:
reader = csv.reader(f, delimiter=" ")
TRvalues = dict(reader)
(Die übersetzungen sind, gehalten .txt-Import)
InformationsquelleAutor Micrified | 2013-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die Daten serialisiert. es gäbe viele Möglichkeiten, es zu tun, aber json und Gurke wird das wahrscheinlich Weg zu gehen, denn Sie wird in der standard-Bibliothek.
für json :
für Gurke(oder seine Geschwister schneller cPickle):
bitte auch nicht schreiben
weil einfach
while True:
würde ausreichen.Hier auf Python 3 muss ich das Kodieren und Dekodieren von den Deponien zusätzlich.
InformationsquelleAutor thkang
Müssen Sie serialisieren Sie Ihre Daten zuerst. Es gibt mehrere Möglichkeiten, dies zu tun, ist die häufigste wahrscheinlich JSON, XML und (python-spezifisch) Gurken. Oder Ihre eigenen benutzerdefinierten Serialisierung.
Ist der Grundgedanke: Daten Serialisiert, senden, empfangen, deserialisiert Sie wieder.
Lesen Sie einfach die Dokumentation zu den python json-Modul. Es ist wirklich ordentlich.
ser = json.dumps (your_dictionary)
undyour_dictionary = json.loads (ser)
.InformationsquelleAutor Hyperboreus
Wenn Sie verwenden möchten, Gurke können Sie verwenden Sie die
loads
unddumps
Funktionen.Können Sie auch verwenden, JSON, in ähnlicher Weise. Ich mag JSON denn es ist von Menschen lesbar und nicht python-spezifisch.
InformationsquelleAutor djhoese
Können Sie verwenden, Gurke und python remote object (oder pyro nur) zu schicken, um vollständige Objekte und Daten, die über Netzwerke (Internet inklusive). Zum Beispiel, wenn Sie möchten, senden Objekt (dict, list, Klasse, Objekte, etc. ) die Verwendung von python remote objects.
Es ist sehr nützlich für Sie tun möchten.
Weitere Informationen gibt es unter diesem link http://pythonhosted.org/Pyro4/
Und dieses starter-Handbuch kann nützlich sein, zu wissen, was Sie senden, oder führen Sie Netzwerk-pcs http://pythonhosted.org/Pyro4/intro.html#simple-example
Ich hoffe, es wird Ihnen helfen,
InformationsquelleAutor ManuParra
Verwendung von JSON zu serialisieren Sie Ihre Daten ist so, wie ich es vorziehen, es zu tun. Ich machte wirklich eine Bibliothek, die genau das für Sie: jsonsocket Bibliothek. Es wird die Serialisierung/Deserialisierung automatisch für Sie. Es verarbeitet auch große Datenmengen effizient.
InformationsquelleAutor Mouad Debbar
Können Sie auch zmqObjectExchanger (https://github.com/ZdenekM/zmq_object_exchanger). Es umschließt Gurke und zmq zu übertragen python-Objekte über ein Netzwerk.
InformationsquelleAutor ZdenekM