2017-01-18 15 views
0

シンプルな.txtファイルを送信する目的でかなり単純なサーバーを作成しましたが、何らかの理由で送信しません。クライアントがサーバーからファイルを受信しないのはなぜですか?

Serverコード:

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() 

Macbook Airは上の私のローカルネットワーク経由イム・テスト、これを任意の助けthatsの場合:

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() 

ここでは、クライアントのコードです。事前のおかげで...

+0

。以前のポートがすでに割り当てられていたためです。 –

+0

@ Jean-FrançoisFabre、それは解決策だと思っていましたが、何度も何度も試してみました。 –

+0

大丈夫です。私は修飾されません:あなたはより具体的にすることができます:クライアントは、送信していないか、サーバーは受信していませんか? –

答えて

1
  1. 複数のファイルを開くと、すべてが同じ変数f
  2. with open("Recieved_File", 'wb') as f:を持ってハンドル - 私はこれは必須ではないと思います。
  3. f = open("/Users/dylanrichards/Desktop/test12.txt")はループ外whileです。
  4. ファイル上記の開口部は、

クライアントコード 'WB' としてモードを追加している間:私はポート番号を変更しようとする

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

あなたのコードを試しましたが、依然としてデータが指定されたファイルに書き込まれていません。サーバーコードに問題はありますか? –

+0

はい、実際には、サーバーはデータを受信したときにそのファイルの内容のみを提供します;) –

+0

ありがとう、どうすればよいですか? –

関連する問題