2017-03-20 1 views
1

클라이언트가 서버에 파일을 보내고 서버가 파일의 내용을 인쇄하는 클라이언트 및 서버 프로그램을 작성했습니다.소켓을 통해 서버에 파일을 전송하는 클라이언트

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' 

내가 잘못 여기서 뭐하는 거지 이것은 코드인가? 어떤 제안이라도 도움이 될 것입니다!

답변

2

self.receiveFilename이라는 self.receiveFileName을 호출하는 대신 server.listen 메서드에서 오타가 있음을 알 필요가 있습니다.

관련 문제