Compare commits

...

2 Commits

Author SHA1 Message Date
f253a0d9df
feat: UDP broadcast test 2024-05-17 23:57:58 +08:00
9b3ca71b70
feat: TCP client-server 2024-05-17 22:14:07 +08:00

57
connection.py Normal file
View File

@ -0,0 +1,57 @@
import socket
import argparse
import threading
import random
import time
def handle_client(conn):
while True:
try:
num = random.randint(0, 100)
conn.send(f"number={num}".encode())
time.sleep(1)
except:
print("Disconnected.")
conn.close()
break
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('type', type=str, help="'client' or 'server'", default='server')
parser.add_argument('--host', type=str, help="server's IPv4 address", default='0.0.0.0')
parser.add_argument('--port', type=int, help="server's listening port", default=8888)
args = parser.parse_args()
socket_type = args.type
host, port = args.host, args.port
if socket_type == 'server':
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((host, port))
print("Server listening...")
while True:
data, addr = sock.recvfrom(1024)
print(f"Accept connection from {addr}")
sock.sendto(host.encode(), addr)
# thread = threading.Thread(target=handle_client, args=(conn, ))
# thread.start()
else:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.settimeout(2)
sock.sendto('discover'.encode(), ('255.255.255.255', port))
while True:
data, addr = sock.recvfrom(1024)
print(data.decode(), addr)