简体   繁体   中英

Client sending a file to server via socket

I wrote a client and a server program in which client sends a file to the server and server prints the contents of the file. This is the code snippet:

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

If i compile both client and server simultaneously, it gives me the following error for server program:

    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'

What am i doing wrong here? Any suggestions would be helpful!

该错误告诉您所有您需要了解的信息, server.listen方法中有一个错字,而不是调用了self.receiveFileName调用self.receiveFilename

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM