0% found this document useful (0 votes)
15 views9 pages

Mainak Sen RA2311026010208 APP Assignment 10

Week 10 solutions of APP

Uploaded by

mainak1331sen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views9 pages

Mainak Sen RA2311026010208 APP Assignment 10

Week 10 solutions of APP

Uploaded by

mainak1331sen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Assignment 10 :

1. PyDatalog Program for Inventory Management:

from pyDatalog import pyDatalog

pyDatalog.create_terms('Item, Quantity, Price, Stock, Reorder_Point, Inventory_Value,


Total_Value, simulate_sale, simulate_restock')

# Inventory Facts: item(Item, Quantity, Price, Stock, Reorder_Point)


+ Item('Apples', 50, 0.5, 50, 20)
+ Item('Bananas', 30, 0.3, 30, 10)
+ Item('Oranges', 20, 0.6, 20, 15)

# Track stock levels and calculate inventory value


Inventory_Value(Item, Quantity, Price) <= (Item(Item, Quantity, Price, _, _) & (Quantity *
Price == Inventory_Value(Item)))
Total_Value[T] = sum_(Inventory_Value(_, Q, P) for Q, P in zip(Quantity, Price))

# Simulate a sale transaction: reduces stock


def simulate_sale(item_name, quantity):
Item(item_name, Q, P, Stock, RP) <= Item(item_name, Q, P, Stock - quantity, RP)

# Simulate a restock transaction: adds stock


def simulate_restock(item_name, quantity):
Item(item_name, Q, P, Stock, RP) <= Item(item_name, Q, P, Stock + quantity, RP)

# Query stock levels


print(Item(Item, Stock))

# Simulate a sale and restock


simulate_sale('Apples', 10)
simulate_restock('Bananas', 20)
print(Item(Item, Stock))

# Calculate total inventory value


print(Total_Value[None])
2. PyDatalog Program for Family Tree Management

from pyDatalog import pyDatalog

pyDatalog.create_terms('Parent, Child, Sibling, Grandparent, Degree, Ancestor,


Common_Ancestor, Cousin')

# Facts for family relationships


+ Parent('John', 'Mary')
+ Parent('John', 'James')
+ Parent('Mary', 'Sue')
+ Parent('James', 'Bob')

# Define sibling relationships


Sibling(X, Y) <= (Parent(Z, X) & Parent(Z, Y) & (X != Y))

# Define grandparent relationships


Grandparent(X, Z) <= (Parent(X, Y) & Parent(Y, Z))

# Define degrees of relationships


Degree(X, Y, 1) <= Parent(X, Y)
Degree(X, Y, D+1) <= (Parent(X, Z) & Degree(Z, Y, D))

# Define common ancestors


Ancestor(X, Y) <= Parent(X, Y)
Ancestor(X, Y) <= (Parent(X, Z) & Ancestor(Z, Y))
Common_Ancestor(X, Y, Z) <= (Ancestor(X, Z) & Ancestor(Y, Z))

# Adding new family members


def add_family_member(parent, child):
+ Parent(parent, child)

# Find cousins
Cousin(X, Y) <= (Grandparent(Z, X) & Grandparent(Z, Y) & (X != Y))

# Query family members


print(Sibling('Mary', 'James'))
print(Grandparent('John', 'Sue'))
print(Cousin('Sue', 'Bob'))
1. TCP: Client Sends a "Hello, Server!" Message

Client:

import socket

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


client.connect(('localhost', 12345))
client.sendall(b"Hello, Server!")
response = client.recv(1024)
print('Received from server:', response.decode())
client.close()

Server:

import socket

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


server.bind(('localhost', 12345))
server.listen(1)
conn, addr = server.accept()
data = conn.recv(1024)
print('Received:', data.decode())
conn.sendall(b"Hello, Client!")
conn.close()
2. TCP: Client Sends List of Numbers, Server Returns Sum

Client:

import socket

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

client.connect(('localhost', 12345))

numbers = [1, 2, 3, 4, 5]

client.sendall(str(numbers).encode())

response = client.recv(1024)

print('Sum received from server:', response.decode())

client.close()

Server:

import socket

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


server.bind(('localhost', 12345))
server.listen(1)
conn, addr = server.accept()
data = conn.recv(1024)
numbers = eval(data.decode())
total = sum(numbers)
conn.sendall(str(total).encode())
conn.close()
3. UDP: Client Sends "UDP Message" Packet

Client:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


client.sendto(b"UDP Message", ('localhost', 12345))
client.close()

Server:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


server.bind(('localhost', 12345))
data, addr = server.recvfrom(1024)
print('Received:', data.decode())
server.close()
4. UDP: Client Sends a Random Number, Server Returns Even/Odd

Client:

import socket
import random

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


number = random.randint(1, 100)
client.sendto(str(number).encode(), ('localhost', 12345))
data, addr = client.recvfrom(1024)
print('Server response:', data.decode())
client.close()

Server:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


server.bind(('localhost', 12345))
data, addr = server.recvfrom(1024)
number = int(data.decode())
response = "Even" if number % 2 == 0 else "Odd"
server.sendto(response.encode(), addr)
server.close()
5. UDP: Server Listens on Port 54321

Server:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


server.bind(('localhost', 54321))
while True:
data, addr = server.recvfrom(1024)
print('Received:', data.decode())
server.sendto(b"Message received", addr)
server.close()

6. UDP Client (Sending the "UDP Message" and receiving acknowledgment)

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


message = "UDP Message"
client.sendto(message.encode(), ('localhost', 12345))
data, addr = client.recvfrom(1024)
print("Acknowledgment from server:", data.decode())

client.close()

UDP Server (Responding with acknowledgment message):

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


server.bind(('localhost', 12345))
print("UDP server is running and waiting for messages...")
while True:
data, addr = server.recvfrom(1024)
print("Received from client:", data.decode())
acknowledgment = "Message received: " + data.decode()
server.sendto(acknowledgment.encode(), addr)
server.close()
7. TCP: Measure Time for Client to Connect and Receive Response

Client:

import socket
import time

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


start_time = time.time()
client.connect(('localhost', 12345))
client.sendall(b"Hello")
response = client.recv(1024)
end_time = time.time()
print('Response:', response.decode())
print('Time taken:', end_time - start_time)
client.close()

8. TCP: Server Echoes Back Messages

Client:
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 12345))
message = "Hello, Server!"
client.sendall(message.encode())
response = client.recv(1024)
print('Received from server:', response.decode())
client.close()

Server:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 12345))
server.listen(1)
conn, addr = server.accept()
data = conn.recv(1024)
conn.sendall(data)
conn.close()
9. TCP: Sending a Text File

Client:

import socket

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


client.connect(('localhost', 12345))

with open('sample.txt', 'r') as file:


data = file.read()

client.sendall(data.encode())
client.close()

Server:

import socket

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


server.bind(('localhost', 12345))
server.listen(1)
conn, addr = server.accept()
data = conn.recv(1024).decode()

with open('received_sample.txt', 'w') as file:


file.write(data)

conn.close()

You might also like