簡體   English   中英

帶套接字的Python文件傳輸錯誤

[英]Python file transfer error w/ sockets

這是我的server.py:

import socket, atexit

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((socket.gethostname(), 8000))
server.listen(5)
(client,(ip,port))=server.accept()
command = raw_input('> ')

if command.rsplit(' ',1)[0] == 'write':
    client.send(command.rsplit(' ',1)[2])
    print 'Client @ ', ip + ' '
    data = client.recv(1024)
    file = open(command.rsplit(' ',1)[1],'rb')
    bytes = file.read(1024)
    while(bytes):
        client.send(bytes)
        bytes = file.read(1024)
    file.close()
    client.close()

client.py:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('MY IP', 8000))
client.send("!")
name = client.recv(1024)

with open(name, 'wb') as file:
    while True:
        data = client.recv(1024)
        if not data:
            break
        file.write(data)

file.close()
client.close()

server.py中的第一次數據傳輸應該將我想要的文件的名稱發送到client.py。 它說:

name = client.recv(1024)

在client.py中,應該使用該名稱來接收並制作文件。 但是,server.py關閉,導致client.py崩潰,並且不提供輸出(主機關閉)。 如果我在IDLE中打開以查看輸出,則該行不通,但無任何顯示。

您的server.py需要調整;

import socket, atexit

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('', 8000))
server.listen(5)
(client,(ip,port))=server.accept()
command = raw_input('> ')

if command.split(' ')[0] == 'write':
    client.send(command.split(' ')[2])
    print 'Client @ '+str(ip)+':'
    data = client.recv(1024)
    file = open(command.split(' ')[1],'rb')
    bytes = file.read(1024)
    while(bytes):
        client.send(bytes)
        bytes = file.read(1024)
    file.close()
    client.close()

rsplit和尾隨的,1 ”引起中斷。

使用輸入write /Users/Namelessthehckr/Downloads/ucsgflmza.cs /Users/Namelessthehckr/Desktop/Test.txt ,文件已成功CP且沒有錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM