1

こんにちは、私はここでマルチキャスト パケットのリアルタイム受信に関する問題を抱えています。以下は、28 バイトのマルチキャスト データを受信し、そのデータを EditText View に表示する必要があるマルチキャスト クライアントのコードです。サーバーは、この 28 バイトのデータを 1 秒ごとにマルチキャスト クライアントに送信しています。

私の問題は、クライアントが間に多くのメッセージを欠いていることです。マルチキャスト データを受信して​​いますが、すべてのデータが EditText に表示されません。問題が見つかりません。任意の提案をいただければ幸いです。よろしくお願いします。

package com.example.cdttiming;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity
{
    EditText time;
    String s;
    Button button;       
    InetAddress ia = null;   
     byte[] bmessage = new byte[1500];
    DatagramPacket dp = new DatagramPacket(bmessage, bmessage.length);
    MulticastSocket ms = null;
    @Override

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     

        time = (EditText) findViewById(R.id.et_time);
    try 
        {
        WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
        //wm.setWifiEnabled(true);      
        WifiManager.MulticastLock multicastLock = wm.createMulticastLock("multicastLock");
        multicastLock.setReferenceCounted(true);        
        multicastLock.acquire();      




        ia = InetAddress.getByName("226.1.1.1");    
        try {
            ms = new MulticastSocket(4321);
            } catch (IOException e) {
            e.printStackTrace();
            }
        try {
            ms.joinGroup(ia);
            } catch (IOException e) {
            e.printStackTrace();
            }

            ms.setReuseAddress(true);




        }
           catch (UnknownHostException e)
            {


            }
            catch (IOException e) 
             {

             }     

     }




    public void startProgress(View view) {

        Runnable runnable = new Runnable() {
          @Override
          public void run() {

        while(true)
            {
             try
             {

                  ms.receive(dp);
                  s = new String(dp.getData(),0,dp.getLength()); 

             }
             catch (UnknownHostException e)
                {


                }
               catch (IOException e) 
                {

                }  


             MainActivity.this.runOnUiThread (new Runnable() {
                 @Override
                 public void run() {
                     time.setText(s);
                 }
               });



           }  // while
          }
        };
        new Thread(runnable).start();
      }


    @Override
     public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }   

}
4

0 に答える 0