Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Client
- # Author: Kevin Singleton,
- # Group partner: Adam Condra
- # cd, dir, ls, get, put, mget, mput, quit
- import os
- import socket
- import gzip
- import shutil
- #Change IP to
- IP = "169.254.240.223"
- PORT = 20
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((IP, PORT))
- loggedIn = False
- while not loggedIn:
- userID = input("User ID: ")
- passWord = input("Password: ")
- message = userID + " " + passWord
- s.sendall(message.encode())
- data = s.recv(1024)
- if data.decode() == "accepted":
- loggedIn = True
- print("Log-in successful.")
- else:
- print("Incorrect information.")
- running = True
- while running:
- #Get input from user
- message = input(">> ")
- if message == "dir":
- #Send command, wait for response, print to sceen
- s.sendall(message.encode())
- data = s.recv(1024)
- print(data.decode())
- elif message == "quit":
- s.sendall(message.encode())
- running = False
- elif message.split()[0] == "get":
- s.sendall(message.encode())
- data = s.recv(32768)
- #Open a new file and write recieved data to file
- newFile = open(message.split()[1], "wb")
- newFile.write(data)
- newFile.close()
- if newFile:
- print("File recieved successfully")
- elif message.split()[0] == "cd":
- s.sendall(message.encode())
- data = s.recv(1024)
- print(data.decode())
- elif message.split()[0] == "put":
- s.sendall(message.encode())
- data = s.recv(1024)
- # Using "ack" to make sure the server is acknowledging the request
- if data.decode() == "ack":
- fileName = open(message.split()[1],"rb")
- fileToSend = fileName.read()
- #Below is compression code that is not yet working
- #with open(message.split()[1], 'rb') as f_in:
- #with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out:
- #shutil.copyfileobj(f_in, f_out)
- s.sendall(fileToSend)
- fileName.close()
- elif message.split()[0] == "ls":
- s.sendall(message.encode())
- data = s.recv(1024)
- print(data.decode())
- elif message.split()[0] == "mget":
- #mget is client side command only, simply queries server multiple times
- for i in message.split()[1:]:
- newMessage = "get " + i
- s.sendall(newMessage.encode())
- data = s.recv(32768)
- newFile = open(newMessage.split()[1], "wb")
- newFile.write(data)
- newFile.close()
- if newFile:
- print("File "+i+" recieved successfully")
- elif message.split()[0] == "mput":
- #mput is client side only, same as mget
- for i in message.split()[1:]:
- newMessage = "put " + i
- s.sendall(newMessage.encode())
- data = s.recv(1024)
- if data.decode() == "ack":
- print("File " + i + " sent.")
- fileName = open(newMessage.split()[1],"rb")
- fileToSend = fileName.read()
- s.sendall(fileToSend)
- fileName.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement