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