def main(): global debug, serverHost, serverPort progname = "framedClient" 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) # for i in range(100): # ClientThread(serverHost, serverPort, debug) actions = ['put', 'get'] files = os.listdir( '../piracy/') # we will grab our rando files from this dir for i in range(100): client = ClientThread(serverHost, serverPort, debug, random.choice(files), '../piracy/', 'put') client.start()
def client(): switchesVarDefaults = ( # Default switches. (('1', '--server'), 'server', "127.0.0.1:50001"), (('?', '--usage'), 'usage', False), (('d', '--debug'), 'debug', False), ) parameterMap = params.parseParams(switchesVarDefaults) server, usage, debug = parameterMap['server'], parameterMap[ 'usage'], parameterMap['debug'] if usage: params.usage() # Calls method from given file params. try: serverHost, serverPort = re.split(":", server) serverPort = int(serverPort) except: print("Can't parse server:port from '%s'" % server) # Server could not be found. sys.exit(1) port = (serverHost, serverPort) # create socket listenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listenSocket.connect(port) while True: fileName = input("> ") fileName.strip() if fileName == "exit": #Exit program if file name matches condition. 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) <= 0: # Error if the file is empty. print("Error: File %s is empty" % fileName) continue framedSend(listenSocket, fileName, contents, debug) # Checks if server received the file. status = int(listenSocket.recv(1024).decode()) if status: print("File %s received by server." % fileName) sys.exit(0) else: # File not received and exit with error. print( "File Transfer Error: File %s was not received by server." % fileName) sys.exit(1) else: # File was not found. Repeat loop. print("File Not Found Error: File %s not found!" % fileName)
def server(): switchesVarDefaults = ( # Default switckes. (('1', '--listenPort'), 'listenPort', 50001), (('?', '--usage'), 'usage', False), (('d', '--debug'), 'debug', False), ) parameterMap = params.parseParams(switchesVarDefaults) listenPort, debug = parameterMap['listenPort'], parameterMap['debug'] if parameterMap['usage']: params.usage() bindAddress = (HOST, listenPort) # creating listening socket listenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listenSocket.bind(bindAddress) listenSocket.listen(10) # 10 connections print("Listening on: ", bindAddress) # check if dir exists to receive files, if not, create it anyway, then move to it if not os.path.exists(PATH): os.makedirs(PATH) os.chdir(PATH) while 1: connection, address = listenSocket.accept() # if no connection or no address, get out of there if not connection or not address: sys.exit(1) if not os.fork(): print("Connected by: ", address) # receive files from client connection try: fileName, contents = framedReceive(connection, debug) except: print("Error: File transfer was not successful!") connection.sendAll(str(0).encode()) sys.exit(1) # save files to 'receive' dir fileName = fileName.decode() writeFile(connection, address, fileName, contents) # return message of success connection.sendall(str(1).encode()) sys.exit(0)
def main(): progname = "echoserver" paramMap = params.parseParams(switchesVarDefaults) debug, listenPort = paramMap['debug'], paramMap['listenPort'] if paramMap['usage']: params.usage() lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # listener socket bindAddr = ("127.0.0.1", listenPort) lsock.bind(bindAddr) lsock.listen(5) print("listening on:", bindAddr) while True: sock, addr = lsock.accept() ServerThread(sock, debug=False, path='../server-files/').start()
def main(): 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) # send the filename and wait for ok response signaling server created file filename = 'soldiers.txt' action = 'put' s = safe_connect(serverHost, serverPort) print('connected') # send filename fs.framedSend(s, filename.encode('utf-8'), debug) print(f'sent filename: {filename}') # send action fs.framedSend(s, action.encode('utf-8')) print(f'sent action: {action}') if action == 'put': # send file print('reading file') try: file = open(filename, 'r').read() except: print('problem opening file, exiting') sys.exit(1) print('sending file') fs.framedSend(s, file.encode('utf-8')) elif action == 'get': print('getting file') file = fs.framedReceive(s, debug).decode('utf-8') print('writting file') filename += '-CLIENT' open(filename, 'w').write(file) print('it is done.')
def main(): paramMap = params.parseParams(switchesVarDefaults) debug, listenPort = paramMap['debug'], paramMap['listenPort'] if paramMap['usage']: params.usage() lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # listener socket bindAddr = ("127.0.0.1", listenPort) lsock.bind(bindAddr) lsock.listen(5) print("listening on:", bindAddr) while True: sock, addr = lsock.accept() if not os.fork(): print(f'child handling connection from {addr}') while True: # the first thing sent should be the filename filename = fs.framedReceive(sock, debug).decode('utf-8') print(f"filename:{filename}") # next thing is put or get action = fs.framedReceive(sock, debug).decode('utf-8') if action == 'put': # now just write file if os.access(filename, os.R_OK | os.W_OK): print('file already exists here SORRY') sys.exit(1) writer = open(filename, 'w') file = fs.framedReceive(sock, debug).decode('utf-8') if len(file) < 1: print('file must not be empty') writer.write(file) sys.exit(0) # everything is fine elif action == 'get': # give them the file file = open(filename).read() fs.framedSend(sock, file.encode('utf-8')) sys.exit(0)
#! /usr/bin/env python3 # Echo server program import socket, sys, re from lib import params switchesVarDefaults = ( (('-l', '--listenPort'), 'listenPort', 50001), (('-?', '--usage'), "usage", False), # boolean (set if present) ) progname = "echoserver" paramMap = params.parseParams(switchesVarDefaults) listenPort = paramMap['listenPort'] listenAddr = '' # Symbolic name meaning all available interfaces if paramMap['usage']: params.usage() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((listenAddr, listenPort)) s.listen(1) # allow only one outstanding request # s is a factory for connected sockets conn, addr = s.accept( ) # wait until incoming connection request (and accept it) print('Connected by', addr) while 1: data = conn.recv(1024).decode()