Ds Final
Ds Final
Practical File
CICPE05
Submitted To Submitted By
Mr. Arvind Kumar Rahul Shrivastava
2022UCI8067
CSIOT ( 3rd Year )
Index
2
Practical 1
Client.py
import socket
def client_program():
host = socket.gethostname() # Get the hostname of the server
port = 5000 # The same port as used by the server
while True:
message = input("Type message (or 'q' to quit): ") # Take input from user
if message.lower() == 'q': # Exit if user types 'q'
break
client_socket.send(message.encode()) # Send message to server
data = client_socket.recv(1024).decode() # Receive response from server
print('Received from server: ' + data) # Print response
if __name__ == '__main__':
client_program()
Server.py
import socket
def server_program():
# Get the hostname
host = socket.gethostname()
port = 5000 # Initiate port number above 1024
while True:
# Receive data stream; it won't accept data packet greater than 1024 bytes
data = conn.recv(1024).decode()
if not data: # If data is not received, break
3
break
print("from connected user: " + str(data))
data = input(' -> ') # Take input from the server
conn.send(data.encode()) # Send data to the client
if __name__ == '__main__':
server_program()
Output :
4
Practical 2
Code :
def main():
# Set up authorizer to manage permissions
authorizer = DummyAuthorizer()
authorizer.add_user(FTP_USER, FTP_PASSWORD, FTP_DIRECTORY, perm='elradfmw') # Full permissions for user
if __name__ == '__main__':
main()
Output:
5
6
Practical 3
Code:
app = Flask(__name__)
app.secret_key = 'your_secret_key' # Required for flash messages
DB_NAME = 'websites.db'
def init_db():
conn = sqlite3.connect(DB_NAME)
c = conn.cursor()
conn.commit()
conn.close()
def get_local_dns(domain):
conn = sqlite3.connect(DB_NAME)
c = conn.cursor()
7
c.execute("SELECT dns FROM websites WHERE domain = ?", (domain,))
result = c.fetchone()
conn.close()
return result[0] if result else None
def get_category(domain):
domain = domain.lower()
if domain.endswith('.in'):
return '.in'
elif domain.endswith('.com'):
return '.com'
elif domain.endswith('.org'):
return '.org'
else:
return 'other'
if local_dns:
flash(f"DNS found locally for {domain}: {local_dns}", 'success')
else:
try:
ip = socket.gethostbyname(domain)
# Store the DNS record we just looked up
category = get_category(domain)
conn = sqlite3.connect(DB_NAME)
c = conn.cursor()
try:
c.execute("INSERT INTO websites (domain, dns, category) VALUES (?, ?, ?)",
(domain, ip, category))
conn.commit()
flash(f"DNS found globally for {domain}: {ip} - Added to database under {category} category",
'success')
except sqlite3.IntegrityError:
flash(f"DNS found globally for {domain}: {ip}", 'success')
finally:
conn.close()
except socket.gaierror:
flash(f"DNS not found for {domain}. You can register this website.", 'warning')
return redirect(url_for('index'))
categorized = {
'.in': [],
8
'.com': [],
'.org': [],
'other': []
}
categorized[category].append((domain, dns))
@app.route('/register', methods=['POST'])
def register_website():
domain = request.form['domain']
dns = request.form['dns']
category = get_category(domain)
conn = sqlite3.connect(DB_NAME)
c = conn.cursor()
try:
c.execute("INSERT INTO websites (domain, dns, category) VALUES (?, ?, ?)", (domain, dns, category))
conn.commit()
flash(f"Website {domain} registered successfully with DNS {dns} under {category} category.", 'success')
except sqlite3.IntegrityError:
flash(f"Domain {domain} is already registered", 'error')
finally:
conn.close()
return redirect(url_for('index'))
if __name__ == '__main__':
init_db()
app.run(debug=True)
9
Output :
10
Practical 4
Aim: Write a program to build chat server and client in Python using
socket programming.
Code:
Client.py
import socket
import threading
def main():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '127.0.0.1' # localhost
port = 12345
try:
client_socket.connect((host, port))
print("Connected to server")
except socket.error as e:
print(f"Connection failed: {e}")
return
def receive_messages():
while True:
try:
data = client_socket.recv(1024)
if not data:
print("Server disconnected")
break
response = data.decode('utf-8')
print(f"Server response: {response}")
except ConnectionResetError:
print("Server disconnected unexpectedly")
break
client_socket.close()
receive_thread = threading.Thread(target=receive_messages)
receive_thread.daemon = True
receive_thread.start()
while True:
message = input("Enter your message: ")
try:
client_socket.sendall(message.encode('utf-8'))
except socket.error as e:
print(f"Error sending message: {e}")
break
if __name__ == "__main__":
main()
11
Server.py
import socket
import threading
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '127.0.0.1' # localhost
port = 12345
try:
server_socket.bind((host, port))
except socket.error as e:
print(f"Bind failed: {e}")
return
server_socket.listen(5)
print(f"Server listening on {host}:{port}")
while True:
client_socket, client_address = server_socket.accept()
client_handler = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_handler.daemon = True
client_handler.start()
if __name__ == "__main__":
main()
Output:
12
13