Ich erstelle einfache Server-Client-Architektur mit Gurke. Wenn ich Daten erhalte und sie drucke, wird die erste Nummer angezeigt, warum? Wie kann ich das vermeiden? zum Beispiel: ({2,2,4}, {3,4}) -> ({2,4}, {3,4})Pickle in Python, falsch empfangene Daten
Servercode: import Beize import Buchse
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
print ("conn info: ", conn)
objrcv = pickle.loads(conn.recv(10024))
print("conn recv: ", objrcv)
print("conn from: ", addr)
print(objrcv)
Client-Code
import socket
import pickle
name = 'name'
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
data = pickle.dumps(name)
s.connect((TCP_IP, TCP_PORT))
# #s.send(data) #powitalne info, dane gracza
def wyslij_dane(my_array): #sending data
data = pickle.dumps(my_array)
if data[0] != 0: # pierwszy argument odpowiedzialny za poddanie sie
print('before send')
s.send(data)
print('after send') #just to control
#data_recv = s.recv(BUFFER_SIZE)
#print("received data:", data_recv)
def rozlacz():#disconnecting
s.close()
wyslij_dane(({2,2,4}, {3,4}))
wyslij_dane({2,2,433})
wyslij_dane(0)
rozlacz()
Server-Ausgabe:
conn info: ...
conn recv: ({2, 4}, {3, 4})
conn from: ('127.0.0.1', 51876)
({2, 4}, {3, 4})
Und ein anderer questio n ist: Was kann ich tun, um alle sendenden Daten zu verarbeiten (alle wyslij_dane() -Funktionen aufrufen)?
'{2,2,4}' ist ein Satz und Sätze haben einzigartige Elemente. Python interpretiert '{2,2,4}' als Menge {2,4} '. Das hat nichts mit Beizen zu tun. – Alec
hah, dumme Aufsicht. Danke, könntest du mir erklären, was ich tun kann, um alle Daten zu senden (alle wyslij_dane() -Funktionen aufrufen)? –