Android Can';不要通过UDP发送消息

Android Can';不要通过UDP发送消息,android,multithreading,udp,Android,Multithreading,Udp,不幸的是,我不能通过UDP发送简单的字符串消息。代码很简单。我创建了一个SendLocation类,我想用它发送一条位置消息。每次我尝试它,我都会收到“无法发送”的信息。有什么想法吗?非常感谢 (messDelay、messCount、ip、端口均为编辑文本) 私有类SendLocation扩展线程{ 私有字符串消息=”; 私有易失性布尔标志=true; 公共发送位置(字符串消息){ this.message=消息; } @凌驾 公开募捐{ while(旗帜){ 试一试{ runOnUiThre

不幸的是,我不能通过UDP发送简单的字符串消息。代码很简单。我创建了一个SendLocation类,我想用它发送一条位置消息。每次我尝试它,我都会收到“无法发送”的信息。有什么想法吗?非常感谢

(messDelay、messCount、ip、端口均为编辑文本)

私有类SendLocation扩展线程{
私有字符串消息=”;
私有易失性布尔标志=true;
公共发送位置(字符串消息){
this.message=消息;
}
@凌驾
公开募捐{
while(旗帜){
试一试{
runOnUiThread(新的Runnable(){
公开募捐{
Toast.makeText(Server.this,message,Toast.LENGTH_SHORT).show();
}
});
byte[]data=message.getBytes();
DatagramSocket套接字=新DatagramSocket();
DatagramPacket packet=新的DatagramPacket(data,data.length,InetAddress.getByName(ip.getText().toString()),
Integer.valueOf(port.getText().toString());
对于(int i=0;i
请提供异常文本,否则我们将猜测。我想问您哪里可以获得异常文本?当您捕获异常时,e。您可以执行以下操作:Toast.makeText(Server.this,“无法发送:”+e.getMessage(),Toast.LENGTH_SHORT).show();或者你可以记录stacktrace谢谢大家。我解决了这个问题。
private class SendLocation extends Thread {

    private String message = "";
    private volatile boolean flag = true;

    public SendLocation(String message) {
        this.message = message;
    }

    @Override
    public void run() {
        while (flag) {
            try {

                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(Server.this, message, Toast.LENGTH_SHORT).show();
                    }
                });

                byte[] data = message.getBytes();

                DatagramSocket socket = new DatagramSocket();
                DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName(ip.getText().toString()),
                        Integer.valueOf(port.getText().toString()));
                for (int i = 0; i < Integer.valueOf(messCount.getText().toString()); i++) {
                    socket.send(packet);
                    Thread.sleep(Integer.valueOf(messDelay.getText().toString()));
                }
                socket.close();
            } catch (Exception e) {
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(Server.this, "Can't send it", Toast.LENGTH_SHORT).show();
                    }
                });
            }
            flag = false;
        }
    }
}