UDP通信,SOCKET.CLOSE()之后,如果循环发送,会有数据进来,我将这些数据放进Arraylist里面,一个个拿出!为什么我只能更新一次,不能循环更新呢!把代码附上,希望好心人能帮忙解决一下,真的感激不尽!
handler更新!
private Runnable mRunnable = new Runnable() {
public void run() {
// listenStatus = true;
while(true) {
try {
Thread.sleep(1000);
mHandler.sendMessage(mHandler.obtainMessage());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
refreshUI();
}
};
private void refreshUI() {
try {
/* if (getReceiveP1() != null
&& !(getReceiveP1().size() == p1)
&& getReceiveP1().size() > 0) {*/
point1.setText((CharSequence) getReceiveP1()
.get(p1));
p1++;
/* } else {
point1.setText("没有数据"); // p1点位
}*/
// getReceiveP1().notify();
} catch (Exception e) {
e.printStackTrace();
}
}
UDP通信
@Override
public void run() {
try {
while (true) {
socket = new DatagramSocket(8011);
listenStatus = true;
while (listenStatus) {
byte[] inBuf = new byte[50];
DatagramPacket inPacket = new DatagramPacket(inBuf,
inBuf.length);
// Log.i("data", inBuf);
socket.receive(inPacket);// 这句有问题
String str = new String(inPacket.getData()); // 拿到数据!
receivep1 = Change1(str, inPacket.getLength());
}socket.close();
}
}
catch (Exception e) {
try {
udpReceiveThread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
我将receivep1生成一个get方法,类型是Arraylist!Change1是我处理数据的一个方法!
你断点确定能拿到数据?