2017-01-18 5 views
0

Ich habe einen ziemlich einfachen Server mit dem Ziel erstellt, eine einfache TXT-Datei zu senden, aber es wird aus irgendeinem Grund nicht gesendet.Warum empfängt mein Client meine Datei nicht vom Server?

Server Code:

import socket 

port = 8081 
host = "192.168.0.20" 
s = socket.socket() 
s.bind((host, port)) 

s.listen(5) 

print("Server Listening.....") 

while True: 
    conn, addr = s.accept() 
    print("Got connection from", addr) 
    data = conn.recv(1024) 
    print("Data recieved", repr(data)) 

    filename = "/Users/dylanrichards/Desktop/keysyms.txt" 
    f = open(filename, 'rb') 
    l = f.read(1024) 
    while (l): 
     conn.send(l) 
     print("Sent", repr(l)) 
     l = f.read(1024) 
    f.close() 

    print("Done sending") 
    conn.send("Thank you for connecting") 
    conn.close() 

Hier ist der Code für die Kunden:

import socket 

port = 8081 
host = "192.168.0.20" 
s = socket.socket() 
s.connect((host, port)) 

with open("Recieved_File", 'wb') as f: 
    print("File opened") 
    while True: 
     print("Receiving data...") 
     data = s.recv(1024) 
     print("Data=%s", (data)) 
     if not data: 
      break 
     f = open("/Users/dylanrichards/Desktop/test12.txt") 
     f.write(data) 

f.close() 
print("Successfully got file") 
print("Connection closed") 
s.close() 

Im Test diese über mein lokales Netzwerk auf einem Macbook Air, wenn das ist jede Hilfe. Vielen Dank im Voraus ...

+0

ich versuchen würde, die Portnummer zu ändern. Wenn es funktioniert, ist das so, weil der vorherige Port bereits vergeben war. –

+0

@ Jean-FrançoisFabre, das war ich dachte, die Lösung könnte sein, aber ich habe das oft vergebens versucht –

+0

in Ordnung, lassen Sie die Netzwerk-Experten beantworten. Ich qualifiziere mich nicht :) Können Sie genauer sein: Schickt der Client nicht, oder empfängt der Server nicht? –

Antwort

1
  1. Multiple-Datei geöffnet Griffe und alle haben die gleiche Variable f
  2. with open("Recieved_File", 'wb') as f: - Ich denke, dies ist nicht erforderlich.
  3. f = open("/Users/dylanrichards/Desktop/test12.txt") sollte außerhalb while Schleife sein.
  4. Während Öffnung über Datei, fügt Modus als 'wb'

-Client-Code:

import socket 

port = 8081 
host = "192.168.0.20" 
s = socket.socket() 
s.connect((host, port)) 

f = open("/Users/dylanrichards/Desktop/test12.txt",'wb') 
while True: 
    print("Receiving data...") 
    data = s.recv(1024) 

    if not data: 
     break 
    print("Data=%s", (data)) 
    f.write(data) 

f.close() 
print("Successfully got file") 
print("Connection closed") 
s.close() 
+0

Ich habe Ihren Code ausprobiert und trotzdem werden die Daten nicht in die angegebene Datei geschrieben. Gibt es ein Problem mit dem Servercode? –

+0

Ja, in der Tat gibt Ihr Server nur den Inhalt der Datei, wenn er einige Daten erhalten hat;) –

+0

OK danke, wie korrigiere ich das? –

Verwandte Themen