Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Use python to Implement an encryption and decryption program to the web chat script Use the AES encryption method import socket import select import sys

Use python to Implement an encryption and decryption program to the web chat script

Use the AES encryption method

import socket import select import sys from thread import *

"""The first argument AF_INET is the address domain of the socket. This is used when we have an Internet Domain with any two hosts The second argument is the type of socket. SOCK_STREAM means that data or characters are read in a continuous flow.""" server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# checks whether sufficient arguments have been provided if len(sys.argv) != 3: print "Correct usage: script, IP address, port number" exit()

# takes the first argument from command prompt as IP address IP_address = str(sys.argv[1])

# takes second argument from command prompt as port number Port = int(sys.argv[2])

""" binds the server to an entered IP address and at the specified port number. The client must be aware of these parameters """ server.bind((IP_address, Port))

""" listens for 100 active connections. This number can be increased as per convenience. """ server.listen(100)

list_of_clients = []

def clientthread(conn, addr):

# sends a message to the client whose user object is conn conn.send("Welcome to this chatroom!")

while True: try: message = conn.recv(2048) if message:

"""prints the message and address of the user who just sent the message on the server terminal""" print "<" + addr[0] + "> " + message

# Calls broadcast function to send message to all message_to_send = "<" + addr[0] + "> " + message broadcast(message_to_send, conn)

else: """message may have no content if the connection is broken, in this case we remove the connection""" remove(conn)

except: continue

"""Using the below function, we broadcast the message to all clients who's object is not the same as the one sending the message """ def broadcast(message, connection): for clients in list_of_clients: if clients!=connection: try: clients.send(message) except: clients.close()

# if the link is broken, we remove the client remove(clients)

"""The following function simply removes the object from the list that was created at the beginning of the program""" def remove(connection): if connection in list_of_clients: list_of_clients.remove(connection)

while True:

"""Accepts a connection request and stores two parameters, conn which is a socket object for that user, and addr which contains the IP address of the client that just connected""" conn, addr = server.accept()

"""Maintains a list of clients for ease of broadcasting a message to all available people in the chatroom""" list_of_clients.append(conn)

# prints the address of the user that just connected print addr[0] + " connected"

# creates and individual thread for every user # that connects start_new_thread(clientthread,(conn,addr))

conn.close() server.close()

==============================================================================

[2] Save this file as client.py. This is the client side script, that each user must use in order to connect to the server.

import socket import select import sys

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if len(sys.argv) != 3: print "Correct usage: script, IP address, port number" exit() IP_address = str(sys.argv[1]) Port = int(sys.argv[2]) server.connect((IP_address, Port))

while True:

# maintains a list of possible input streams sockets_list = [sys.stdin, server]

""" There are two possible input situations. Either the user wants to give manual input to send to other people, or the server is sending a message to be printed on the screen. Select returns from sockets_list, the stream that is reader for input. So for example, if the server wants to send a message, then the if condition will hold true below.If the user wants to send a message, the else condition will evaluate as true""" read_sockets,write_socket, error_socket = select.select(sockets_list,[],[])

for socks in read_sockets: if socks == server: message = socks.recv(2048) print message else: message = sys.stdin.readline() server.send(message) sys.stdout.write("") sys.stdout.write(message) sys.stdout.flush() server.close()

============================================================================== [3]. HOW TO RUN OR INITIATE THE CHAT

/* Both the server and client script can then be run from the Command prompt (in Windows) or from bash Terminal (Linux users) by simply typing

"python chat_server.py " or "python client.py ".

For example, */

python chat_server.py 192.168.55.13 8081

python client.py 192.168.55.13 8081

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intelligent Databases Technologies And Applications

Authors: Zongmin Ma

1st Edition

1599041219, 978-1599041216

More Books

Students also viewed these Databases questions

Question

In an Excel Pivot Table, how is a Fact/Measure Column repeated?

Answered: 1 week ago