コード例 #1
0
class Server(Thread):
    
    def __init__(self, sockAddress):
        Thread.__init__(self)
        self.sock, self.address = sockAddress
        self.fsock = EncapFramedSock(sockAddress)

    def run(self):
        print("new thread handling connection from", self.address)
        while 1:
            try:
                print("try statement 1 ********")
                fileName, contents = self.fsock.receive()
                print("done **********")
            except:
                print("Error: File transfer was not successful!")
                self.fsock.sendStatus(0)
                self.fsock.close()
                sys.exit(1)

            # data not received
            if fileName is None or contents is None:
                print ("Client ", self.address, " has disconnected")
                sys.exit(0)
            print("writing *********")
            lock.acquire()

            # write the file
            fileName = fileName.decode()
            self.writeFile(fileName, contents)

            self.fsock.sendStatus(1)
            lock.release()
            print("release *********")
            
    def writeFile(self, fileName, contents):

        if fileName is None:
            raise TypeError
        if contents is None:
            raise TypeError

        try:
            # check if dir exists to receive files
            if not os.path.exists(PATH):
                os.makedirs(PATH)
            os.chdir(PATH)

            # create file to write
            writer = open(fileName, 'w+b')
            writer.write(contents)
            writer.close()
            print("File %s received from %s" % (fileName, self.address))
        except FileNotFoundError:
            print("File Not Found Error: File %s not found" % fileName)
            self.fsock.Status(0)
            sys.exit(1)
コード例 #2
0
class Server(Thread):
    def __init__(self, sockAddress):
        Thread.__init__(self)
        self.sock, self.address = sockAddress
        self.fsock = EncapFramedSock(sockAddress)

    def run(self):
        print("new thread handling connection from", self.address)
        while True:
            try:
                fileName, contents = self.fsock.receive(debug)
            except:
                print("Error: File transfer was not successful!")
                self.fsock.sendStatus(0, debug)
                self.fsock.close()
                sys.exit(1)

            if debug:
                print("Received", contents)

            # Data not received. Exit system.
            if fileName is None or contents is None:
                print("Client ", self.address, " has disconnected")
                sys.exit(0)

            lock.acquire()
            if debug:
                time.sleep(5)

            fileName = fileName.decode()
            self.writeFile(fileName, contents)

            self.fsock.sendStatus(1, debug)
            lock.release()

    def writeFile(self, fileName, contents):
        if fileName is None:
            raise TypeError
        if contents is None:
            raise TypeError
        try:
            # Check if there is a directory to receive files.
            if not os.path.exists(PATH):
                os.makedirs(PATH)
            os.chdir(PATH)

            # New file to open.
            writer = open(fileName, 'w+b')
            writer.write(contents)
            writer.close()
            print("File %s received from %s" % (fileName, self.address)
                  )  # Prints output to ensure the file was received.
        except FileNotFoundError:
            print("File Not Found Error: File %s not found" %
                  fileName)  # File not found error. Exit.
            self.fsock.Status(0, debug)
            sys.exit(1)
コード例 #3
0
def client():
    switchesVarDefaults = (
        (('1', '--server'), 'server', "127.0.0.1:50001"),
        (('?', '--usage'), 'usage', False),
        (('d', '--debug'), 'debug', False),
    )

    parameterMap = params.parseParams(switchesVarDefaults)
    server, usage = parameterMap['server'], parameterMap['usage']

    if usage:
        params.usage()

    try:
        serverHost, serverPort = re.split(":", server)
        serverPort = int(serverPort)
    except:
        print("Can't parse server:port from '%s'" % server)
        sys.exit(1)

    port = (serverHost, serverPort)

    # create socket
    listenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listenSocket.connect(port)

    encapSocket = EncapFramedSock((listenSocket, port))

    while 1:
        fileName = input("Enter a filename > ")
        fileName.strip()

        if fileName == "exit":  # terminate
            sys.exit(0)
        else:
            if not fileName:
                continue
            elif os.path.exists(PATH + fileName):
                f = open(PATH + fileName, "rb")
                contents = f.read()

                if len(contents) < 1:
                    print("Error: File %s is empty" % fileName)
                    continue
                print("encapSocket Before ********")
                encapSocket.send(fileName, contents)
                print("encapSocket After *********")

                # check if server captured and receive the file
                status = encapSocket.Status()
                status = int(status.decode())

                if status:
                    print("File %s received by server." % fileName)
                    sys.exit(0)
                else:
                    print(
                        "File Transfer Error: File %s was not received by server."
                        % fileName)
                    sys.exit(1)

            else:
                print("File Not Found Error: File %s not found!" % fileName)