java - 如何使用套接字编程在Android中测量数据包丢失?

标签 java android sockets network-programming

我正在为Android开发一个应用程序,我需要从服务器进行通信,并且我在套接字编程的帮助下做到了这一点,现在我需要在连接中查找 Packet Loss ,所以是否有任何 API 或任何查找方式套接字编程中的数据包丢失。

我将我的代码段附加到客户端从服务器接收消息的位置。

  try {
        socket = new Socket(dstAddress, dstPort);
        dataOutputStream = new DataOutputStream(
                socket.getOutputStream());
        dataInputStream = new DataInputStream(socket.getInputStream());
        dataOutputStream.writeUTF(name);
        dataOutputStream.flush();

         String myArray = "";
         int i=0;
        while (!goOut) {
            flag=0;
            if (dataInputStream.available() > 0) {
                msgLog += dataInputStream.readUTF();
                flag=1; 
                MainActivity.this.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        chatMsg.setText(msgLog);
                    }
                });

            Log.d("DERE", msgLog);

                 myArray=msgLog+"";   
              Log.v("ARE", myArray);
            }
            //Log.v("ARE", myArray[0]);
            if(flag==1)
            received(myArray);

            if(!msgToSend.equals("")){
                dataOutputStream.writeUTF(msgToSend);
                dataOutputStream.flush();
                msgToSend = "";
            }
        }
        //Looper.loop();

    } catch (UnknownHostException e) {
        e.printStackTrace();
        final String eString = e.toString();
        MainActivity.this.runOnUiThread(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(MainActivity.this, eString, Toast.LENGTH_LONG).show();
            }

        });

最佳答案

您可以检查此代码。

String lost = new String();    
            String delay = new String();    
            Process p = Runtime.getRuntime().exec("ping -c 4 " + "119.147.15.13");    
            BufferedReader buf = new BufferedReader(new InputStreamReader(p.getInputStream()));    
            String str = new String();    
            while((str=buf.readLine())!=null){    
                if(str.contains("packet loss")){    
                    int i= str.indexOf("received");    
                    int j= str.indexOf("%");    
                    System.out.println(":"+str.substring(i+10, j+1));    
//                  System.out.println(":"+str.substring(j-3, j+1));     
                    lost = str.substring(i+10, j+1);    
                }    
                if(str.contains("avg")){    
                    int i=str.indexOf("/", 20);    
                    int j=str.indexOf(".", i);    
                    System.out.println(":"+str.substring(i+1, j));    
                    delay =str.substring(i+1, j);    
                    delay = delay+"ms";    
                }    

            }    

资料来源:http://www.phonesdevelopers.com/1762932/

关于java - 如何使用套接字编程在Android中测量数据包丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470291/

相关文章:

java - Grails Spring 安全注册需适度

java - HBase 中的组合键

android - 扩展 Android 应用程序的最佳做法是什么?

java - android tcp/ip 套接字不会将数据发送到计算机

java - JMeter OutOfMemory 由于 groovy 脚本创建了多个类而导致

java - HashMap 包含键

android - 难以读取 XML 文件

android - greenDAO:比较两个属性

c++ - 通过套接字从 Linux 向 Windows 机器发送空字节 - 会相同吗

javascript - Ajax /套接字: javascript array object properties get lost