サーバーとAndroidデバイス間の接続を確立してUDPしようとしています。サーバーとAndroidクライアントの部分を作成しました。コンピューターのローカルホストでサーバーを起動すると、サーバーとエミュレーターの両方が非常にうまく通信できます。ただし、サーバーをクラウドで起動すると、エミュレーターはudpパケットをサーバーに送信できますが、受信できません。
したがって、最初に頭に浮かぶのは、パケットがエミュレーターに到達するのを妨げるルーティングの問題がある可能性があるということでした。したがって、私は3g接続で携帯電話(samsung galaxy s2、ICS)を使用しました。しかし、同じことが再び起こりました。私の電話はudpパケットを送信できますが、受信できません。
それで、クラウドにある私のマシンはパケットを送信できないのではないかと思いました。だから、私はwiresharkでパケットをスニッフィングし、それが実際にudpパケットを送受信していることを確認しました。
私はstackoverflowでこの問題について多くの質問を読みましたが、解決策を思い付くことができませんでした。多分あなたたちは私を助けてくれます。これが私の仕事のサーバーとクライアントのudp送信/受信部分です。あなたがより多くの情報を必要とするならば、私は与える準備ができています。
前もって感謝します。
サーバー(リスニングパーツを書く必要はありません'cuz問題ありません)
ClientIPAddress = IncomingPacket.getAddress();
ClientPort = IncomingPacket.getPort();
OutToClientSocket = new DatagramSocket();
DatagramPacket PacketToClient = new DatagramPacket(sendBuffer, sendBuffer.length, ClientIPAddress, ClientPort);
OutToClientSocket.send(PacketToClient);
クライアント(リスニング部分のみ)
ServerIP = InetAddress.getByName(MachineName);
DatagramPacket IncomingPacket = new DatagramPacket(buf, buf.length);
MySocket.receive(IncomingPacket);
buf = IncomingPacket.getData();
...