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)
示例#4
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)
示例#7
0
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()
    if not data: break
    sendMsg = "Echoing %s" % data
    print("Received '%s', sending '%s'" % (data, sendMsg))
    conn.send(sendMsg.encode())