1
新しいPythonで新しい。そして、私はサーバーが同時に2つのポートを聞くことができません。 これは私が今まで書かれているコードです:私はクライアントと一緒にこのコードを実行するとPython - 2つのUDPソケットからのリスニングサーバ
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
、サーバーは何も受信できません。これは、ready_clientのうちの1つだけを使用する場合にのみ機能します。
ありがとうございます!
同じコードは、クライアントソケットとサーバソケットの両方に耳を傾けなければならない理由は? – e4c5
@ e4c5申し訳ありませんが、私はあなたの質問を理解しているか分からない。多分このコードは役に立ちます:このコードは、実際には2つのノード間で透過的に動作するモジュールです。パケットを受信し、それらを実際の宛先ノードに再送信する。私は誰が私がデータを送信すべきかを知ることができるので、私が受け取った人から知る必要があります。私はローカルでそれをシミュレートするので、ポート番号はソースを区別するために使用している方法です。 – user00
その場合は、iptablesなどを再発明しようとしているようです。 – e4c5