1

ラップトップからAndroidデバイスにUDPパケットを送信したいのですが、そのための簡単なアプリを作成しましたが、機能しません。使用したポート(5554)が問題だと思います。コード:

`private void runUdpServer()

    EditText RecieveText = (EditText) findViewById(R.id.editText1);
    EditText check = (EditText) findViewById(R.id.editText2);
    String lText;
    byte[] lMsg = new byte[MAX_UDP_DATAGRAM_LEN];
    DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
    DatagramSocket ds = null;
    RecieveText.setText("try1");
    try {

RecieveText.setText("try2"); ds = new DatagramSocket(UDP_SERVER_PORT); // i think the problem is here
//disable timeout for testing
if (ds != null){RecieveText.setText("connected");}
else {RecieveText.setText( "接続されていません");}

        RecieveText.setText("try");

ds.receive(dp); lText = new String(lMsg, 0, dp.getLength()); Log.i("UDP packet received", lText); RecieveText.setText(lText); check.setText("port opened"); } catch (SocketException e) {`` check.setText("SocketException"); e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();
        check.setText("port didn't open");

    } finally {
        if (ds != null) {
            ds.close();
            RecieveText.setText("not connected1");
        }
        else {RecieveText.setText("not connected1");}
    }
    check.setText("end");
     if (ds != null){RecieveText.setText("connected");}            

else {RecieveText.setText("not connected");} } }

4

1 に答える 1

0

ポートの問題ではないと思います...エラーログを印刷して、失敗をよりよく理解してください....とにかくこれを試してください...タイプミスをチェックしないでください....ネットワークタスクも覚えておいてください非同期タスク内にいる方が良いです...

    int port =1855; ///any port that you want > 1024
    DatagramSocket socket = null;
    try {
        socket = new DatagramSocket(port);
    } catch (SocketException e) {
        e.printStackTrace();
    }
    try {
        socket.setBroadcast(true);
    } catch (SocketException e) {
        e.printStackTrace();
    }


    //////send socket
    int eport = 1616;
    InetAddress eip = null;
    try {
        eip = InetAddress.getByName("192.168.1.1");  ////SERVER IP ADDRESS 
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }


    DatagramSocket esocket = null;
    try {
        esocket = new DatagramSocket(eport);
    } catch (SocketException e) {
        e.printStackTrace();
    }

///送信

   byte[] send= new byte[60*1024];
     DatagramPacket send_packet = new DatagramPacket(send, send.length);


    try {
        socket.send(send_packet);
    } catch (IOException e) {
        e.printStackTrace();
    }

////// receive while(true){を開始します

        byte[] message = new byte[60*1024];
        DatagramPacket recv_packet = new DatagramPacket(message, message.length);


        try {
            socket.receive(recv_packet);
        } catch (IOException e) {
            e.printStackTrace();
        }
    ///Do something whit recv_packet
}
于 2015-07-11T15:06:06.500 に答える