Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.16 KB | None | 0 0
  1. # Client
  2. # Author: Kevin Singleton,
  3. # Group partner: Adam Condra
  4. # cd, dir, ls, get, put, mget, mput, quit
  5. import os
  6. import socket
  7. import gzip
  8. import shutil
  9.  
  10. #Change IP to
  11. IP = "169.254.240.223"    
  12. PORT = 20          
  13. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14. s.connect((IP, PORT))
  15. loggedIn = False
  16.  
  17. while not loggedIn:
  18.     userID = input("User ID: ")
  19.     passWord = input("Password: ")
  20.     message = userID + " " + passWord
  21.     s.sendall(message.encode())
  22.     data = s.recv(1024)
  23.     if data.decode() == "accepted":
  24.         loggedIn = True
  25.         print("Log-in successful.")
  26.     else:
  27.         print("Incorrect information.")
  28.  
  29. running = True
  30. while running:
  31.     #Get input from user
  32.     message = input(">> ")
  33.     if message == "dir":
  34.         #Send command, wait for response, print to sceen
  35.         s.sendall(message.encode())
  36.         data = s.recv(1024)
  37.         print(data.decode())
  38.     elif message == "quit":
  39.         s.sendall(message.encode())
  40.         running = False
  41.     elif message.split()[0] == "get":
  42.         s.sendall(message.encode())
  43.         data = s.recv(32768)
  44.         #Open a new file and write recieved data to file
  45.         newFile = open(message.split()[1], "wb")
  46.         newFile.write(data)
  47.         newFile.close()
  48.         if newFile:
  49.             print("File recieved successfully")
  50.     elif message.split()[0] == "cd":
  51.         s.sendall(message.encode())
  52.         data = s.recv(1024)
  53.         print(data.decode())
  54.     elif message.split()[0] == "put":
  55.         s.sendall(message.encode())
  56.         data = s.recv(1024)
  57.         # Using "ack" to make sure the server is acknowledging the request
  58.         if data.decode() == "ack":
  59.             fileName = open(message.split()[1],"rb")
  60.             fileToSend = fileName.read()
  61.             #Below is compression code that is not yet working
  62.             #with open(message.split()[1], 'rb') as f_in:
  63.                 #with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
  64.                     #shutil.copyfileobj(f_in, f_out)
  65.             s.sendall(fileToSend)
  66.         fileName.close()
  67.     elif message.split()[0] == "ls":
  68.         s.sendall(message.encode())
  69.         data = s.recv(1024)
  70.         print(data.decode())
  71.     elif message.split()[0] == "mget":
  72.         #mget is client side command only, simply queries server multiple times
  73.         for i in message.split()[1:]:
  74.             newMessage = "get " + i
  75.             s.sendall(newMessage.encode())
  76.             data = s.recv(32768)
  77.             newFile = open(newMessage.split()[1], "wb")
  78.             newFile.write(data)
  79.             newFile.close()
  80.             if newFile:
  81.                 print("File "+i+" recieved successfully")
  82.     elif message.split()[0] == "mput":
  83.         #mput is client side only, same as mget
  84.         for i in message.split()[1:]:
  85.             newMessage = "put " + i
  86.             s.sendall(newMessage.encode())
  87.             data = s.recv(1024)
  88.             if data.decode() == "ack":
  89.                 print("File " + i + " sent.")
  90.                 fileName = open(newMessage.split()[1],"rb")
  91.                 fileToSend = fileName.read()
  92.                 s.sendall(fileToSend)
  93.             fileName.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement