我在我的onCreate方法中創建線程。我通過線程上的udp接收數據。由於某種原因,它不起作用。線程不是在android中創建
private void UdpThread() {
// server will listen to one client
try
{
Thread udpServerThread = new Thread()
{
@Override
public void run()
{
Log.i("rrr","receivePacket3");
try
{
while(true)
{
sleep(1000);
Log.i("rrr","receivePacket2");
String[] recieved = null;
DatagramSocket clientSocket = null;
InetAddress IPAddress = null;
try {
IPAddress = InetAddress.getByName("localhost");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] receiveData = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
clientSocket = new DatagramSocket(8086);
Log.i("rrr","receivePacket");
clientSocket.receive(receivePacket);
Log.i("rrr","receivePacket1");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
modifiedSentence = new String(receivePacket.getData());
System.out.println("in client receive:" + modifiedSentence);
Log.i("Received data",modifiedSentence);
clientSocket.close();
modifiedSentence = modifiedSentence.trim();
Log.i("Received data",modifiedSentence);
}
} catch (Exception e){
Log.e("UDP", "S: Error", e);
}
}
};
udpServerThread.start();
//udpServerThread.setPriority(Thread.MAX_PRIORITY);
Toast.makeText(this,modifiedSentence,Toast.LENGTH_LONG).show();
}catch (Exception e) {
// TODO: handle exception
Log.e("eeeee",""+e);
e.printStackTrace();
}
}
我該怎麼做,當控制不立即從thread.and返回,並等待,直到數據沒有收到。
你是什麼意思*「線程沒有創建和控制跳轉到敬酒」*? 'udpServerThread.start();'將啓動線程並立即返回,而啓動的線程並行運行,並且您的代碼將繼續執行到下一行。 – assylias 2012-07-31 11:13:11
問題不完整(我只是修復了語言,拼寫和格式),您還需要共享日誌。 – Siddharth 2012-07-31 11:13:51
@assylias然後爲什麼我沒有通過udp獲取數據,我已經在線程中編碼。 – Rcp 2012-07-31 11:18:22