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