2017-03-18 20 views
0

私はserver.javaとclient.pythonファイルを持っています。しかし、私が次のことを試してみると、「[Errno 10013]アクセス許可で禁止されている方法でソケットにアクセスしようとしました」というエラーが表示されます。これを回避する方法はありますか?なぜこうなった?あなたのコードは、私には、意味がありません。何をしているか
client.py2つの別々のプログラムで2つのソケットを同じポートにバインドする方法はありますか?

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
sockRecv = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
sock.bind((socket.gethostname(),4000)) 
sockRecv.bind((socket.gethostname(),4000 + 1)) 

server.java

recvSocket = new DatagramSocket(4000); 
sendSocket = new DatagramSocket(4000 + 1); 
+0

これらは両方とも同じポートにバインドされません。一方がサーバーでもう一方がクライアントであることを再確認してください。サーバーはポートにバインドし、もう一方はポートに接続します。 – RobertB

答えて

2

IPアドレス+ポートは、データグラム通信のエンドポイントを表します。 2つのアプリケーションが同じエンドポイントにバインドできた場合、エンドポイントに送信されたパケットを受信するアプリケーションはどれですか?それらの中の一つ?どちらも?

マルチキャストIPアドレスにバインドしない限り、UDPはマルチキャストプロトコルではありません。


コードのヒント(変数名)に基づいて、同じホスト上の2つのアプリケーション間でメッセージの受け渡しを設定しようとしていると思います。あなたがこれを行う必要がある場合は、次の

  • アプリケーションAがポートP1に結合し、ポートP2にメッセージを送信し
  • アプリケーションBは、ポートP2に結合し、ポートP1にメッセージを送信します。

アプリケーションAとBが同じエンドポイントにバインドする必要はありません。私はあなたがやろうとしていることをするために同じポートを...。

関連する問題