Cn Practicals
Cn Practicals
def subnet_calculator(ip_with_prefix):
try:
# Create an IPv4 network object using the input provided
network = ipaddress.ip_network(ip_with_prefix, strict=False)
except ValueError as e:
print(f"Error: {e}")
if __name__ == "__main__":
# User input for IP address and CIDR notation
ip_with_prefix = input("Enter an IP address with CIDR prefix (e.g., 192.168.1.0/24): ")
# Call the subnet calculator function
subnet_calculator(ip_with_prefix)
OUTPUT:
Exp 4.
Find suitable path for transmission using state/ Distance vector routing
protocol.
distance_vectors = [
def print_distance_vectors():
for i in range(len(NODES)):
def update_distance_vectors():
for i in range(len(NODES)):
for j in range(len(NODES)):
for k in range(len(NODES)):
print_distance_vectors()
OUTPUT:
Exp 5.
Socket Programming using C/ C++/ JAVA
//Socket programming using java.
import java.net.DatagramPacket;
import java.net.DatagramSocket;
while (true) {
socket.receive(packet);
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
socket.receive(responsePacket);
}
import java.io.*;
import java.net.*;
while (true) {
out.println("Message received");
clientSocket.close();
}
}
import java.io.*;
import java.net.*;
out.println(message);
socket.close();
}
Exp 6.
TCP socket for wired network
a. Say Hello to each other
b.File Transfer
a.Server.py
import socket
import os
def sanitize_filename(filename):
return os.path.basename(filename)
def start_server():
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen()
with conn:
print(f"Connected by {addr}")
greeting = conn.recv(1024).decode()
print(f"Client: {greeting}")
filename = conn.recv(1024).decode()
filename = sanitize_filename(filename)
conn.sendall(b'READY')
os.makedirs("received_files", exist_ok=True)
while True:
chunk = conn.recv(1024)
break
f.write(chunk)
if __name__ == "__main__":
start_server()
a. Client.py
import socket
import os
HOST = '192.168.43.219'
PORT = 65433
def start_client():
if not os.path.exists(filename):
return
try:
client_socket.connect((HOST, PORT))
print("Connected to the server!")
response = client_socket.recv(1024).decode()
print(f"Server: {response}")
client_socket.sendall(os.path.basename(filename).encode())
ack = client_socket.recv(1024).decode()
if ack != "READY":
return
client_socket.sendall(chunk)
except socket.error as e:
if __name__ == "__main__":
start_client()
b. tcp_server1.py
import socket
import os
import time
BUFFER_SIZE = 32
BUFFER_FILENAME = 1024
SERVER_IP = '127.0.0.1'
SERVER_PORT = 12345
sock.bind((SERVER_IP, SERVER_PORT))
sock.listen(1)
while True:
print(f"Connected by {client_addr}")
file_name = connection.recv(BUFFER_FILENAME).decode()
try:
print('Sending Data...')
connection.send(buf)
except FileNotFoundError:
continue
finally:
connection.close()
b. tcp_client1.py
import socket
import os
import time
BUFFER_SIZE = 32
HOST = '127.0.0.1'
PORT = 12345
if file_number == 1:
elif file_number == 2:
elif file_number == 3:
file_name = "Shogun.txt"
elif file_number == 4:
elif file_number == 5:
else:
print("Invalid selection.")
exit()
try:
sock.connect((HOST, PORT))
print('Connected')
sock.send(file_name.encode())
# Construct the new filename
new_file_name = f"{base_name}+Protocol=TCP+{os.getpid()}{extension}"
start = time.time()
# Open the new file to write data received from the server
print('Receiving Data')
while True:
byte = sock.recv(BUFFER_SIZE)
break
file_size = os.stat(new_file_name).st_size
finally:
import socket
import os
import time
BUFFER_SIZE = 32
BUFFER_FILENAME = 1024
SERVER_IP = '127.0.0.1'
SERVER_PORT = 12345
sock.bind((SERVER_IP, SERVER_PORT))
while True:
print(client_addr, 'connected')
start = time.time()
file_name = file_name.decode().strip()
file_name = os.path.basename(file_name)
try:
print('Sending Data')
buf = fd.read(BUFFER_SIZE)
while buf:
sock.sendto(buf, client_addr)
buf = fd.read(BUFFER_SIZE)
end = time.time()
except FileNotFoundError:
sock.close()
UDP_client.py
import socket
import os
import time
BUFFER_SIZE = 32
HOST = '127.0.0.1'
PORT = 12345
file_number = int(input())
if file_number == 1:
elif file_number == 2:
file_name = "Don Quixote.txt"
elif file_number == 3:
file_name = "Shogun.txt"
elif file_number == 4:
elif file_number == 5:
else:
print("Invalid selection.")
exit()
file = file_name.split('.')
try:
start = time.time()
sock.sendto(file_name.encode(), server_addr)
print('Receiving Data')
while True:
try:
byte, server = sock.recvfrom(BUFFER_SIZE)
if not byte:
except socket.timeout:
print("Timeout Occurred")
break
end = time.time()
print("Downloaded", file_name)
# Calculate throughput
file_stat = os.stat(file_name)
file_size = file_stat.st_size
finally:
sock.close()
Exp 9.
Learn email protocol using Microsoft Office Outlook
Exp. 10
To study IPsec protocol
Exp 11.
Installation and configuration of DHCP server.
Assign static IP to server – 10.0.0.2 and assume gateway as
Configure DHCP on server
import socket
def dns_lookup(query):
try:
host = socket.gethostbyaddr(query)
except socket.error:
# If it's not a valid IP, assume it's a domain and perform DNS lookup
try:
ip_address = socket.gethostbyname(query)
except socket.gaierror:
# Driver code
if __name__ == "__main__":
dns_lookup(query)