Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Either Java or Python You are to create a direct messenger program. In particula

ID: 3754577 • Letter: E

Question

Either Java or Python

You are to create a direct messenger program. In particular, the program will perform as follows:

It must behave as either a client or a server, depending on the command line arguments supplied when started.

Specifically, the -l option will direct the program to listen for connections, thereby acting as a server. If the -l option is not present on the command line, your program will connect to a server, thereby acting as a client.

The port number must also be supplied as a command line argument.

Although your messenger may be hard-coded to connect only to localhost when acting as a client, you may include a server address on the command line as well, thereby permitting your messenger to connect between hosts.

The -l option, if used, should be placed immediately after the name of the program and before the port number and server address arguments.

Once the client and server messengers are connected, either end can send text messages to the other end.

Messages must be provided to the program using standard input.

Immediately after receiving a message, the program must output the message to standard output.

The program is terminated by first shutting down sending, then closing the socket. Once one end shuts down, the other side will receive a zero-length message, informing it of the shut down. The other side must then shut down immediately.

Usage

Usage as a server:Python:

Java:

Usage as a client:Python:

Java:

Explanation / Answer

import sys

import socket

args = sys.argv

print(args)

server=False

client=False

#Command Line arguments checking

if(len(args)==3):

if(args[1]=="-l"):

try:

portAddress = int(args[2])

server=True

except ValueError:

print("Port Number Should contain only numbers,1-65535")

else:

try:

portAddress = int(args[1])

try:

socket.inet_aton(args[2])

client=True

except socket.error:

print("Server address is invalid.")

except ValueError:

print("Port Number Should contain only numbers,1-65535")

else:

print("invalid number of arguments")

#end of command line argument checking

if(client==True):

soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

hostAddress = args[2]

portAddress = int(args[1])

soc.connect((hostAddress, portAddress))

while True:

try:

print('Waiting For Message.......')

receivedMsg = soc.recv(1024)

print("Server: ",receivedMsg.decode("ascii"))

sendMsg = input("YOU: ")

soc.send(sendMsg.encode("ascii"))

except Exception:

print("Error Occured.Exiting........")

break

soc.close()

if(server==True):

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#socket creation

hostAddress = ''

portAddress = int(args[2])

print('Socket created')

try:

server.bind((hostAddress,portAddress))

print("Binding Completed........")

except Exception as error:

print('Unable to Bind,')

print(error)

sys.exit(0)

server.listen()

print('Waiting for client Connections')

clientConn, clientAddr = server.accept()

print('Client Connected',clientAddr[0],':',clientAddr[1])

while True:

try:

sendMsg = input("YOU: ")

clientConn.send(sendMsg.encode('ascii'))

print("Waiting for Msg.......")

receivedMsg = clientConn.recv(1024)

print("Client:",receivedMsg.decode("ascii"))

except Exception:

print("Error Occured..Exiting........")

break

clientConn.close()

server.close()

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote