Demo Tugas 1 Pemrograman Jaringan
Khaela Fortunela 05111940000057
Kode Program main.py:
#!/usr/bin/env python3
import argparse
import socket
import glob
import time
def recvall(sock, length):
data = b''
while len(data) < length:
more = sock.recv(length - len(data))
if not more:
raise EOFError('was expecting %d bytes but only received'
' %d bytes before the socket closed'
% (length, len(data)))
data += more
return data
def server(interface, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((interface, port))
sock.listen(1)
while True:
print('Waiting to accept a new connection')
sc, sockname = sock.accept()
print('We have accepted a connection from', sockname)
print(' Socket name:', sc.getsockname())
print(' Socket peer:', sc.getpeername())
len_msg = recvall(sc, 3)
message = recvall(sc, int(len_msg))
inp = repr(message)
cmd = inp.split()
if(cmd[0] == "ping"):
print(cmd[0])
print("pass")
str = cmd[1:]
pr = ' '.join(str)
pr = "terima: " + pr
sc.sendall(bytes(pr, encoding="utf-8"))
elif(cmd[0] == "ls"):
print(cmd[0])
if(len(cmd) > 1):
add = glob.glob(cmd[1])
else:
address = "/home/fortunela/tugasprogjar/tugas1/*"
add = glob.glob(address)
pr = ""
for i in add:
pr += i + '\n'
sc.sendall(bytes(pr, encoding="utf-8"))
elif(cmd[0] == "get"):
print(cmd[0])
f = open(cmd[1], "rb")
b = f.read()
print(len(b))
f.close()
b = open(cmd[1], "rb").read()
s = cmd[1].split("/")
x = n[0] + "/" + cmd[2]
f = open(x, "wb+")
b = repr(b)
c = bytes(b, "ascii")
f.write(c)
f.close()
elif(cmd[0] == "quit"):
print(cmd[0])
time.sleep(1)
sc.close()
else:
print("unknown")
def client(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
print('Client has been assigned socket name', sock.getsockname())
inp = input("> ")
msg = inp.encode()
len_msg = b"%03d" % (len(msg),)
msg = len_msg + msg
sock.sendall(msg)
reply = recvall(sock, 10)
print(repr(reply))
sock.close()
if __name__ == '__main__':
choices = {'client': client, 'server': server}
parser = argparse.ArgumentParser(description='Send and receive over TCP')
parser.add_argument('role', choices=choices, help='which role to play')
parser.add_argument('host', help='interface the server listens at;'
' host the client sends to')
parser.add_argument('-p', metavar='PORT', type=int, default=1060,
help='TCP port (default 1060)')
args = parser.parse_args()
function = choices[args.role]
function(args.host, args.p)
Komentar
Posting Komentar