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