예제 #1
0
    def run(self):
        print("Working in Thread-%d" % threadNum)
        framed_sock = framedSocket.framedSocket(self.connectedSock)

        request = framed_sock.recv_msg()
        os.write(1, "Recieving: {}\n".format(request).encode())

        if request == "send":
            fileName = framed_sock.recv_msg()
            os.write(1, "Receiving {}\n".format(fileName).encode())

            path = "./server/" + fileName

            lock.acquire()
            if os.path.isfile(path):
                sent = framed_sock.send_msg("This file aready exists.")
                os.write(1, "Sending {}\n".format(sent).encode())

            else:
                os.write(1, ("Sending: " + framed_sock.send_msg("accept") +
                             "\n").encode())
                fd = os.open("./server/" + fileName, os.O_CREAT | os.O_WRONLY)
                os.write(fd, (framed_sock.recv_msg()).encode())
                os.close(fd)
                os.write(1, "File {} created.\n".format(fileName).encode())
            lock.release()
        else:
            os.write(1, "Inconplete request".encode())
        self.connectedSock.shutdown(socket.SHUT_WR)
def client():
    switchesVarDefaults = (
        (('-s', '--server'), 'server', "127.0.0.1:50001"),
        (('-d', '--debug'), "debug", False),  # boolean (set if present)
        (('-?', '--usage'), "usage", False),  # boolean (set if present)
    )

    paramMap = params.parseParams(switchesVarDefaults)

    server, usage, debug = paramMap["server"], paramMap["usage"], paramMap["debug"]

    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)

    addr_port = (serverHost, serverPort)

    # create socket object
    listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listen_socket.connect(addr_port)

    # create encapsulated socket
    encap_socket = framedSocket((listen_socket, addr_port))

    while True:
        filename = input("Enter the file to be sent: ")
        filename.strip()

        if filename == "exit":
            sys.exit(0)
        else:
            if not filename:
                continue
            elif os.path.exists(PATH_FILES + filename):
                # open file and read
                file = open(PATH_FILES + filename, "rb")
                file_content = file.read()

                # verify file is not empty before sending
                if len(file_content) < 1:
                    print(EMPTY_MSG % filename)
                    continue

                # send file contents to server
                encap_socket.send(filename, file_content, debug)

                # check if server received file
                status = encap_socket.get_status()
                status = int(status.decode())

                # successful transfer
                if status:
                    print(CONFIRM_MSG % filename)
                    #sys.exit(0)
                # failed transfer
                else:
                    print(REJECT_MSG % filename)
                    sys.exit(1)

            # file not found
            else:
                print("ERROR: file %s not found. Try again" % filename)
 def __init__(self, sockAddr):
     Thread.__init__(self)
     self.sock, self.addr = sockAddr
     self.fsock = framedSocket(sockAddr)
        continue
    break

if s is None:
    print("could not open socket")
    sys.exit(1)

delay = float(paramMap['delay'])
if delay != 0:
    print(f"sleeping for {delays}s")
    time.sleep(delay)
    print("done sleeping")

#above code provided by Dr.Freudenthal#
    
fs = framedSocket() #create instance of framedSocket class

input = my_getLine() #input from the user
command,localfile,host,remotefile = parseTCPInput(input) #parse input and get filename

fs.sendMessage(remotefile.encode())

reply = fs.receiveMessage()

if reply =="NO":
    OS.WRITE(2,("Failed").encode())
    sys.exit(1)

else:
    fd = os.open(localfile, os.O_RDONLY)
    buff = ""
        continue
    try:
        print(" attempting to connect to %s" % repr(sa))
        sock.connect(sa)
    except sock.error as msg:
        print(" error: %s" % msg)
        sock.close()
        sock = None
        continue
    break

if sock is None:
    print('could not open socket')
    sys.exit(1)

framed_sock = framedSocket.framedSocket(sock)
sent = framed_sock.send_msg('send')
os.write(1, ("Sending " + sent + '\n').encode())

sent = framed_sock.send_msg(remoteFile)
os.write(1, ("Sending " + sent + '\n').encode())

response = framed_sock.recv_msg()
os.write(1, ("Receiving " + response + '\n').encode())

if response == "accept":
    print("Will now send file named " + localFile + '\n')
    data = my_fileReader(localFile)
    framed_sock.send_msg(data)
    os.write(1, "Sending {}\n".format(localFile).encode())