def get(filename): print "Downloading file: " + str(filename) RxP.sendData(clientSocket, "GET: " + str(filename)) response = RxP.receiveData(clientSocket) print "Received response: ", response #clientSocket.recieveData return
def test_4(): client = RxP.createRxPSocket("localhost", 5000) server = RxP.createRxPSocket("localhost", 5001) RxP.listenForRxPConnections(server) RxP.connectToRxP(client, "localhost", 5001) RxP.sendData(client, "Hello") RxP.close(client)
def listenForServerRequests(): print "Listening for server requests!" while(True): request = RxP.receiveData(serverSocket) if "GET" in str(request): print "GETTING a file" request = str(request).replace("GET: ", "") print "Getting file: ", request with open (request, "r") as myfile: data = myfile.read() RxP.sendData(serverSocket, data)
def terminate(): print "Shutting down server" RxP.closeRxPSocket(serverSocket) return
def main(): # check for number of correct command line arguments if len(sys.argv) != 4: print ('Please enter arguments in the correct format: X A P' + '\nX: The port number this server should bind to'+ '\nA: The IP address of NetEmu' + '\nP: The UDP port number of NetEmu ') sys.exit() # port number at which the FxA-Server's UDP socket should bind to try: portnumber = int(sys.argv[1]) except: print 'Please enter a valid port number for Server (1025-65536)' sys.exit() ipaddress = sys.argv[2] try: emuportnumber = int(sys.argv[3]) except: print 'Please enter a valid port number for NetEmu (1025-65536)' sys.exit() windowSize = 1 # check for valid client port numbers if portnumber < 1025 or portnumber > 65536: print 'Please enter a valid port number for client (1025-65536)' sys.exit() # Port number for client must be even if portnumber % 2 != 1: print 'Port number for server must be odd' sys.exit() # check for valid IP addresses try: inet_aton(ipaddress) except: if ipaddress != "localhost": print("Not a valid IP address") sys.exit() # check for valid NetEmu UDP port number if emuportnumber < 1025 or emuportnumber > 65536: print 'Please enter a valid port number for NetEmu (1025-65536)' sys.exit() global emuportnumber # creating and binding rxp socket serverSocket = RxP.createRxPSocket(ipaddress, portnumber) global serverSocket incoming_connection = RxP.listenForRxPConnections(serverSocket) # After getting an incoming connection RxP.acceptRxPSocketConnection(serverSocket, incoming_connection) if RxP.isConnected(serverSocket): thread = threading.Thread(target=listenForServerRequests) thread.start() threads.append(thread) #the command loop while True: # have the user input a command and parse it command = raw_input('\nCommand: ').split(" ") # check for invalid command if len(command) > 2: print "Enter a valid command" continue #check for terminate if len(command) == 1: # terminate the server if command[0] == "terminate": terminate() for thread in threads: thread.join() sys.exit() continue else: print "Please enter a valid command" continue #check for window elif len(command) == 2: #window if command[0] == "window": window(command[1]) continue else: print "Please enter a valid command" continue
def test_basic_sending(is_client): if is_client: print "Testing basic connection as a client" client = RxP.createRxPSocket("localhost", 5000) RxP.connectToRxP(client, "localhost", 5001) RxP.sendData(client, "Hello, World! This is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test T Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test TTest Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test TesThis is a big test. Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test") RxP.closeRxPSocket(client) else: print "Testing basic connection as a server" server = RxP.createRxPSocket("localhost", 5001) connection_attempt_address = RxP.listenForRxPConnections(server) print("Receieved connection attempt from: ", connection_attempt_address) RxP.acceptRxPSocketConnection(server, connection_attempt_address) response = RxP.receiveData(server, 999999) print "Received data: ", response RxP.closeRxPSocket(server)
def test_basic_connection(is_client): if is_client: print "Testing basic connection as a client" client = RxP.createRxPSocket("localhost", 5000) RxP.connectToRxP(client, "localhost", 5001) time.sleep(3) RxP.closeRxPSocket(client) else: print "Testing basic connection as a server" server = RxP.createRxPSocket("localhost", 5001) connection_attempt_address = RxP.listenForRxPConnections(server) print("Receieved connection attempt from: ", connection_attempt_address) RxP.acceptRxPSocketConnection(server, connection_attempt_address) time.sleep(3) RxP.closeRxPSocket(server)
def test_create_socket(): socket = RxP.createRxPSocket("localhost", 9998) RxP.closeRxPSocket(socket)
def main(): rxpProtocol = None # Handling the argument arg = sys.argv if len(arg) < 3 or len(arg) > 4: print 'Invalid command. Please try again.' sys.exit() # pass the command line arguments try: clientPort = int(arg[1]) except ValueError: print 'Invalid command. Please try again.' sys.exit() # validate if not 0 < clientPort < 65536: print 'Invalid port number. Please try again.' sys.exit() # Server IP address serverIP = arg[2] if not _validIP(serverIP): print 'IP address is not valid, please try again' sys.exit() # netEmu port number try: netEmuPort = int(arg[3]) except ValueError: print 'Invalid command. Please try again.' sys.exit() # validate if not 0 < netEmuPort < 65536: print 'Invalid port number. Please try again.' sys.exit() # Dest. port number desPort = clientPort + 1 log = "output-client.txt" clientProtocol = None sendThread = None connThread = None sThread = None #execute user's commend while True: time.sleep(.500) Sinput = raw_input("type connect - to establish connection \n" + "get 'filename' - to download the file from server \n" + "post 'filename' - to upload the file to server \n" + "Window W - to change the window size \n" + "disconnect - to close the connection\n" + 'quit - to quit the application\n') if Sinput.__eq__("connect"): rxpProtocol = RxP(serverIP, netEmuPort, clientPort, desPort, log) clientProtocol = RecvThread(rxpProtocol) clientProtocol.start() rxpProtocol.connect() # get file form server elif "get" in Sinput: if rxpProtocol != None: s = Sinput.split() rxpProtocol.getFile(s[1]) # post file form server elif "post" in Sinput: if rxpProtocol != None: s = Sinput.split() sendThread = SendThread(rxpProtocol, s[1]) sendThread.start() # set the window size elif "window" in Sinput: if rxpProtocol != None: s = Sinput.split() try: window = int(s[1]) except ValueError: print 'Invalid window size. Please try again.' sys.exit() if not 0 < window < 50: print 'Window size too big. Please try again.' sys.exit() print "Set window size to " + str(window) rxpProtocol.setWindowSize(window) #close connection elif Sinput.__eq__("disconnect"): if rxpProtocol != None: rxpProtocol.close() clientProtocol.stop() rxpProtocol.socket.close() rxpProtocol = None elif Sinput.__eq__("quit"): if rxpProtocol: print 'disconnect before quit' else: break
def main(): print ("Server Starts") # Handling the argument arg = sys.argv if len(arg) < 3 or len(arg) > 4: print 'Invalid command. Please try again.' sys.exit() log = "output-server.txt" #pass the command line arguments try: hostPort = int(arg[1]) except ValueError: print 'Invalid command. Please try again.' sys.exit() # validate if not 0 < hostPort < 65536: print 'Invalid port number. Please try again.' sys.exit() #Server IP address serverIP = arg[2] # validate if not _validIP(serverIP): print 'IP address is not valid, please try again' sys.exit() # netEmu port number try: netEmuPort = int(arg[3]) except ValueError: print 'Invalid command. Please try again.' sys.exit() # validate if not 0 < netEmuPort < 65536: print 'Invalid port number. Please try again.' sys.exit() # Dest. port number desPort = hostPort - 1 rxpProtocol = RxP(serverIP, netEmuPort, hostPort, desPort, log) serverProtocol = RecvThread(rxpProtocol) serverProtocol.start() # execute user's commend while (True): Sinput = raw_input("type Window W - to change the window size \n" + "terminate - to terminate the server\n") if "window" in Sinput: s = Sinput.split() try: wsize = int(s[1]) except ValueError: print 'Invalid window size. Please try again.' sys.exit() if not 0 < wsize < 50: print 'Window size too big. Please try again.' sys.exit() print "Set window size to " + str(wsize) rxpProtocol.setWindowSize(wsize) # close server elif Sinput.__eq__("terminate"): rxpProtocol.close() serverProtocol.stop() for thread in rxpProtocol.threads: thread.stop() print ("Server is closed") break
def main(): #uncomment #clientSocket = RxP() # check for number of correct command line arguments if len(sys.argv) != 4: print ('Please enter arguments in the correct format: X A P' + '\nX: The port number this client should bind to'+ '\nA: The IP address of NetEmu' + '\nP: The UDP port number of NetEmu ') sys.exit() # port number at which the FxA-client's UDP socket should bind to. Should be equal to the server's port number minus 1 try: portnumber = int(sys.argv[1]) except: print 'Please enter a valid port number for client (1025-65536)' sys.exit() ipaddress = sys.argv[2] try: emuportnumber = int(sys.argv[3]) except: print 'Please enter a valid port number for NetEmu (1025-65536)' sys.exit() file = "" # window size in segments windowSize = 30 # check for valid client port numbers if portnumber < 1025 or portnumber > 65536: print 'Please enter a valid port number for client (1025-65536)' sys.exit() # Port number for client must be even if portnumber % 2 != 0: print 'Port number for client must be even' sys.exit() # check for valid IP addresses try: inet_aton(ipaddress) except: if ipaddress != "localhost": print("Not a valid IP address") sys.exit() # check for valid NetEmu UDP port number if emuportnumber < 1025 or emuportnumber > 65536: print 'Please enter a valid port number for NetEmu (1025-65536)' sys.exit() global emuportnumber # When everything passes, bind the RxP socket to passed in ip_address and port_number clientSocket = RxP.createRxPSocket(ipaddress, portnumber) global clientSocket # Set window size RxP.setWindowSize(clientSocket, windowSize) print "Welcome! Commands include: \n'connect' \n'get <file>' \n'post <file>' \n'window <size>' \n'disconnect'" #the command loop while True: # have the user input a command and parse it command = raw_input('\nCommand: ').split(" ") # check for invalid command if len(command) > 2: print "Enter a valid command" continue #check for connect and disconnect if len(command) == 1: if command[0] == "connect": connect() continue elif command[0] == "disconnect": disconnect() continue else: print "Please enter a valid command" continue #check for get, post, and window elif len(command) == 2: #get if command[0] == "get": file = str(command[1]) get(file) continue #post if command[0] == "post": file = str(command[1]) post(file) continue #window if command[0] == "window": #int type checking try: size = int(command[1]) except: print "invalid window size" continue window(windowSize) continue else: print "Please enter a valid command" continue
def connect(): print "Connecting to server" ip, port = clientSocket.source_address RxP.connectToRxP(clientSocket, ip, emuportnumber) return