簡體   English   中英

客戶端通過套接字向服務器發送文件

[英]Client sending a file to server via socket

我編寫了一個客戶端和一個服務器程序,其中客戶端將文件發送到服務器,服務器打印文件的內容。 這是代碼片段:

Server---------------->serverprog.py

import socket
from threading import *


class Server:
    gate = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = socket.gethostname()
    port = 0
    file = ''

    def __init__(self, port):
        self.port = port
    #        self.gate.bind((self.host, self.port))  
        self.gate.bind(("127.0.0.1", self.port))
        self.listen()
    def listen(self):
        self.gate.listen(10)
        while True:
            conn,address = self.gate.accept()
            self.receiveFilename(conn)
    def receiveFileName(self, sock):
        buf = sock.recv(1024)
        print('First bytes I got: ' + buf)

a = Server(8888)




Client ------------------>clientprog.py

import socket
from threading import *

class Client:
    gateway = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #host = socket.gethostname()
    host = ''
    port = 0
    file = ''

    def __init__(self, host, port, file):
        self.port = port
        self.host = host
        self.file = file
        self.connect()

    def connect(self):
        self.gateway.connect((self.host, self.port))
        self.sendFileName()
        self.sendFile()

    def sendFileName(self):
        self.gateway.send("name:" + self.file)

    def sendFile(self):
        readByte = open(self.file, "rb")
        data = readByte.read()
        readByte.close()

        self.gateway.send(data)
        self.gateway.close()



a = Client('127.0.0.1', 8888, 'datasend.txt')

如果同時編譯客戶端和服務器,則服務器程序將出現以下錯誤:

    Traceback (most recent call last):
  File "receivefilepg.py", line 25, in <module>
    a = Server(8888)
  File "receivefilepg.py", line 15, in __init__
    self.listen()
  File "receivefilepg.py", line 20, in listen
    self.receiveFilename(conn)
AttributeError: Server instance has no attribute 'receiveFilename'

我在這里做錯了什么? 任何的意見都將會有幫助!

該錯誤告訴您所有您需要了解的信息, server.listen方法中有一個錯字,而不是調用了self.receiveFileName調用self.receiveFilename

暫無
暫無

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

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