Group B

Q9: Write a program using UDP Sockets to enable file transfer (Script, Text, Audio, and Video – one file each) between two machines.

UDP Socket Programming for File Transfer

Solution and implementation for Q9 from Computer Networks (cnl).

9_upd_file_transfer.txt Download
UDP File Transfer (Same Device or Network)
This program transfers files using UDP sockets.
Can work on the same device (localhost) or between devices on the same network.

Files Required

receiver.py - UDP Server (receives files)
sender.py - UDP Client (sends files)

-----------------------------------------------
receiver.py:

import socket
import os

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(("0.0.0.0", 5001))
print("[+] UDP Server listening on port 5001")

os.makedirs("received_files", exist_ok=True)

# Receive filename
data, addr = server.recvfrom(4096)
filename = data.decode()
print(f"Receiving: {filename} from {addr}")

# Receive file data
with open(f"received_files/{filename}", "wb") as f:
    while True:
        data, addr = server.recvfrom(4096)
        if data == b"EOF":
            break
        f.write(data)

print(f"Saved: {filename}")

-------------------------------------------------------
sender.py

import socket
import os

server_ip = "127.0.0.1"     # Use "127.0.0.1" for same device, or receiver's IP for network
server_port = 5001
filepath = r"C:\Users\YourName\Desktop\dog.jpeg" 

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

if not os.path.isfile(filepath):
    print(f"[-] File '{filepath}' does not exist.")
else:
    filename = os.path.basename(filepath)
    client.sendto(filename.encode(), (server_ip, server_port))
    
    with open(filepath, "rb") as f:
        while (chunk := f.read(4096)):
            client.sendto(chunk, (server_ip, server_port))
    
    client.sendto(b"EOF", (server_ip, server_port))
    print(f"File '{filename}' sent to {server_ip}:{server_port}")

-----------------------------------------------------------------------
How to Run
For SAME DEVICE (localhost):
Set server_ip = "127.0.0.1" in sender.py
Terminal 1:
python receiver.py
Terminal 2:
python sender.py

For DIFFERENT DEVICES (network):
Step 1: Find Receiver's IP Address
On Windows:
ipconfig
Look for IPv4 Address (e.g., 192.168.1.5)

Step 2: Update sender.py
Change server_ip = "127.0.0.1" to receiver's actual IP (e.g., "192.168.1.5")
Update filepath with your file path using raw string: r"C:\path\to\file.jpg"

Step 3: Start Receiver (Terminal 1)
python receiver.py
Step 4: Run Sender (Terminal 2)
python sender.py
Files are saved in the received_files/ directory on the receiver's machine.

Other Questions in Computer Networks

See All Available Questions
Download