def main():
    """Main"""
    next_no = 0
    exit_flag = False
    sin_port, sout_port, csin_port, file = checkCommandArgs()

    #sin socket
    sin = Server(IP, sin_port, BUFFER_SIZE)
    sin.accept()

    #sout socket
    sout = Client(IP, sout_port)
    sout.connect(IP, csin_port)

    open_file = File(file)
    buffer = PacketBuffer()

    sent = 0

    while (not exit_flag):
        data, data_len = open_file.readBytes()
        pack = Packet(DATA_PACKET, next_no, data_len, data)
        if data_len == 0:
            exit_flag = True
        buffer.onqueue(pack)
        while True:
            sout.send(pickle.dumps(buffer.peek()))
            sent += 1
            if not sin.receiveSecond(next_no):
                print("no responce or incorrect responce")
                continue
            print("response and checked")
            next_no += 1
            buffer.dequeue()
            break
    open_file.close()
    sout.shutdown()
    sin.close()
    sout.close()
    print("sent: " + str(sent))