Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多消息udp_Java_Android_Udp - Fatal编程技术网

Java 多消息udp

Java 多消息udp,java,android,udp,Java,Android,Udp,我试图将多个数据包从android服务器发送到客户端,但问题是代码仅在两次迭代后停止,然后以未捕获的异常退出,所以我做错了什么。 你能帮我吗 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHo

我试图将多个数据包从android服务器发送到客户端,但问题是代码仅在两次迭代后停止,然后以未捕获的异常退出,所以我做错了什么。 你能帮我吗

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainTalker extends Activity 
{
private static DatagramSocket socket;
private static DatagramPacket packet;
private static Thread send;
private Button cl1;
private static EditText ed1;
private static String msg = "Message";
private static byte[] data = new byte[15];
//private static byte[] pktcount = new byte[10];
private static String TAG = "Sender UDP";
static int count=0;
static String[] output = new String[100] ;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_talker);

    ed1 = (EditText) findViewById(R.id.msg);
    cl1 = (Button) findViewById(R.id.send);

    try {
        socket = new DatagramSocket(11001);
        Toast toast = Toast.makeText(getApplicationContext(),"Port Opened",Toast.LENGTH_SHORT);
        toast.show();
        System.out.println("Port Opened ");
        socket.setBroadcast(true);
    } catch (Exception e) {
        System.out.println("Exception: Port not opened");
        e.printStackTrace();
        Log.e(TAG, e.getMessage());
    }

    cl1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {
            System.out.println("Button Clicked ");

            send = new sendthr();
            send.start();
        }
    });
}

private static class sendthr extends Thread {
    public void run()
    {
            System.out.println("Thread Started");

            String messg = ed1.getText().toString();
            System.out.println(messg);
            for (int i=0; i<=messg.length(); i+=10)
            {
                if(messg.length()>i+10)
                    output[i] = messg.substring(i,i+10);
                else
                    output[i]=messg.substring(i);
                count++;
                output[i+1] =count + ": " + output[i];
                System.out.println(output[i+1]);
            }
            output[0] = Integer.toString(count);
            System.out.println(count);
            if (messg == null)
                messg = msg;
            int i =0;
            while(i !=count)
            {
            data = output[i].getBytes();
            try
            { //Create packet with target host and target port
                packet = new DatagramPacket(data,data.length,InetAddress.getByName("192.168.8.17"), 11001);
                System.out.println("Packet Created");

            } catch (UnknownHostException e) {
                System.out.println("Exception: Packet Created");

                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }

            try
            {
                System.out.println("Sending the packet  "+ msg);
                socket.send(packet);
                System.out.println("Packet sent");
            } catch (IOException e) {
                System.out.println("Exception: Packet Send");
                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }
            i++;
        }     
}

第89行有NPE。据我统计,是:

packet = new DatagramPacket(data,data.length,InetAddress.getByName("192.168.8.17"), 11001);
如果是,则最有可能的
数据
null
。(如果第89行在其他位置,请指出它是哪一行)

也不要打电话

System.out.println(count);
在Android上。做

Log.i( TAG, "count: " + count ); 

您在多个地方都看到了这个问题(第54、80、93、101、103、105行…),所以请修复所有这些问题。。。并在subject W/dalvikvm(1121)中不添加任何标记:threadid=11:thread退出时出现未捕获异常(group=0x40a13300),这是我在尝试运行data=output[I].getBytes()后得到的异常;第三次。请发布整个堆栈跟踪。编辑您的问题以添加错误日志!不要把它们贴在评论里,这只会让你更难得到帮助。我想你需要帮助!我使用它只是为了知道错误发生在哪里,这样可以更容易地调试错误。
data=output[I].getBytes()这是我运行调试器时代码停止的地方。显然,
output[I]
null
。工厂
Log.i(标签“”+输出[i])或进行分步调试以找到罪魁祸首是的,我已经尝试过调试它,似乎输出得到了这样的值,但我不知道如何修复循环
[3,1:djsfhewnke,null,null,null,null,null,null,null,null,jriuwhffit,2:jriuwhffit,null,null,null,null,null,null,null,jroij,3:jroij,…
Log.i( TAG, "count: " + count );