Ich bin neu in Python. Und ich kann den Server nicht dazu bringen, zwei Ports gleichzeitig zu hören. Dies ist der Code ich bis jetzt geschrieben haben:Python - Server hört von zwei UDP-Sockets
sock_client1 = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock_client1.bind((SEND_IP, SEND_CLIENT_PORT))
sock_client1.setblocking(0)
sock_client2 = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock_client2.bind((SEND_IP, SEND_SERVER_PORT))
sock_client2.setblocking(0)
while True:
try:
ready_client1 = select.select([sock_client1], [], [], None)
ready_client2 = select.select([sock_client2], [], [], None)
if ready_client1[0]:
pkt_recv_raw, addr = sock_client1.recvfrom(4096)
port = SEND_CLIENT_PORT
if ready_client2[0]:
pkt_recv_raw, addr = sock_client2.recvfrom(4096)
port = SEND_SERVER_PORT
Wenn ich diesen Code ausführen zusammen mit einem Client, kann der Server noch nichts erhalten. Es funktioniert nur, wenn ich nur einen der ready_clients verwende.
Vielen Dank im Voraus!
warum sollte der gleiche Code hören sowohl auf dem Client-Socket und der Server-Socket? – e4c5
@ e4c5 Sorry, ich bin mir nicht sicher, ob ich deine Frage verstanden habe. Vielleicht hilft das: Dieser Code ist eigentlich ein Modul, das transparent für die Übertragung zwischen zwei Knoten arbeiten soll. Er empfängt ihre Pakete und sendet sie erneut an den realen Zielknoten. Ich muss wissen von wem ich empfangen habe, dann kann ich wissen, an wen ich die Daten senden soll. Da ich es lokal simuliere, ist die Portnummer die Art, die ich verwende, um die Quellen zu unterscheiden. – user00
In diesem Fall klingt es wie Sie versuchen, iptables oder ähnliches neu zu erfinden. – e4c5