First commit

This commit is contained in:
Yui
2026-05-02 20:54:01 -03:00
commit 1f6b38c894
9 changed files with 244 additions and 0 deletions

56
server.py Normal file
View File

@@ -0,0 +1,56 @@
import socket
import select
IP = "0.0.0.0"
UDP_PORT = 5069
TCP_PORT = 6069
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
udp.bind((IP, UDP_PORT))
tcp.bind((IP, TCP_PORT))
tcp.listen(10)
tcpconns = {tcp}
def udp_data(udp: socket.socket) -> None:
(udp_incoming, _, _) = select.select([udp], [], [], 0)
if udp_incoming:
udp_data, udp_addr = udp.recvfrom(1024)
print("Received UDP data from %s with content %s" % (udp_addr, udp_data))
udp.sendto(udp_data, udp_addr)
def tcp_data(tcp: socket.socket) -> None:
(newsocks, _, _) = select.select(tcpconns, [], tcpconns, 0)
for sock in newsocks:
if sock is tcp:
conn, addr = tcp.accept()
conn.setblocking(False)
tcpconns.add(conn)
print("TCP connection from %s:%d" % addr)
print(len(tcpconns))
continue
try:
data = sock.recv(1024)
print("TCP Data: %s" % data)
sock.sendall(b"aarf")
except socket.timeout:
print("Connection closed by remote end")
tcpconns.remove(sock)
sock.close()
except ConnectionResetError:
print("Connection reset by peer")
tcpconns.remove(sock)
sock.close()
except BrokenPipeError:
print("Broken pipe")
tcpconns.remove(sock)
sock.close()
while True:
udp_data(udp)
tcp_data(tcp)