mirror of
https://github.com/fosrl/newt.git
synced 2026-02-08 05:56:40 +00:00
Add test udp server and client
This commit is contained in:
49
udp_client.py
Normal file
49
udp_client.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Argument parsing: Check if IP and Port are provided
|
||||||
|
if len(sys.argv) != 3:
|
||||||
|
print("Usage: python udp_client.py <HOST_IP> <HOST_PORT>")
|
||||||
|
# Example: python udp_client.py 127.0.0.1 12000
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
HOST = sys.argv[1]
|
||||||
|
try:
|
||||||
|
PORT = int(sys.argv[2])
|
||||||
|
except ValueError:
|
||||||
|
print("Error: HOST_PORT must be an integer.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# The message to send to the server
|
||||||
|
MESSAGE = "Hello UDP Server! How are you?"
|
||||||
|
|
||||||
|
# Create a UDP socket
|
||||||
|
try:
|
||||||
|
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
except socket.error as err:
|
||||||
|
print(f"Failed to create socket: {err}")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(f"Sending message to {HOST}:{PORT}...")
|
||||||
|
|
||||||
|
# Send the message (data must be encoded to bytes)
|
||||||
|
client_socket.sendto(MESSAGE.encode('utf-8'), (HOST, PORT))
|
||||||
|
|
||||||
|
# Wait for the server's response (buffer size 1024 bytes)
|
||||||
|
data, server_address = client_socket.recvfrom(1024)
|
||||||
|
|
||||||
|
# Decode and print the server's response
|
||||||
|
response = data.decode('utf-8')
|
||||||
|
print("-" * 30)
|
||||||
|
print(f"Received response from server {server_address[0]}:{server_address[1]}:")
|
||||||
|
print(f"-> Data: '{response}'")
|
||||||
|
|
||||||
|
except socket.error as err:
|
||||||
|
print(f"Error during communication: {err}")
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Close the socket
|
||||||
|
client_socket.close()
|
||||||
|
print("-" * 30)
|
||||||
|
print("Client finished and socket closed.")
|
||||||
58
udp_server.py
Normal file
58
udp_server.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# optionally take in some positional args for the port
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
try:
|
||||||
|
PORT = int(sys.argv[1])
|
||||||
|
except ValueError:
|
||||||
|
print("Invalid port number. Using default port 12000.")
|
||||||
|
PORT = 12000
|
||||||
|
else:
|
||||||
|
PORT = 12000
|
||||||
|
|
||||||
|
# Define the server host and port
|
||||||
|
HOST = '0.0.0.0' # Standard loopback interface address (localhost)
|
||||||
|
|
||||||
|
# Create a UDP socket
|
||||||
|
try:
|
||||||
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
except socket.error as err:
|
||||||
|
print(f"Failed to create socket: {err}")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
# Bind the socket to the address
|
||||||
|
try:
|
||||||
|
server_socket.bind((HOST, PORT))
|
||||||
|
print(f"UDP Server listening on {HOST}:{PORT}")
|
||||||
|
except socket.error as err:
|
||||||
|
print(f"Bind failed: {err}")
|
||||||
|
server_socket.close()
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
# Wait for and process incoming data
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
# Receive data and the client's address (buffer size 1024 bytes)
|
||||||
|
data, client_address = server_socket.recvfrom(1024)
|
||||||
|
|
||||||
|
# Decode the data and print the message
|
||||||
|
message = data.decode('utf-8')
|
||||||
|
print("-" * 30)
|
||||||
|
print(f"Received message from {client_address[0]}:{client_address[1]}:")
|
||||||
|
print(f"-> Data: '{message}'")
|
||||||
|
|
||||||
|
# Prepare the response message
|
||||||
|
response_message = f"Hello client! Server received: '{message.upper()}'"
|
||||||
|
|
||||||
|
# Send the response back to the client
|
||||||
|
server_socket.sendto(response_message.encode('utf-8'), client_address)
|
||||||
|
print(f"Sent response back to client.")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An error occurred: {e}")
|
||||||
|
break
|
||||||
|
|
||||||
|
# Clean up (though usually unreachable in an infinite server loop)
|
||||||
|
server_socket.close()
|
||||||
|
print("Server stopped.")
|
||||||
Reference in New Issue
Block a user