2017-03-20 29 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メソッドでタイプミスがあります。

関連する問題