我正在製作一個非常簡單的應用程序,我從我的PC上的Java程序發送一個文本字符串,我試圖從我的Android應用程序在模擬器中接收相同的字符串。如何通過UDP客戶端接收文本字符串
這是我的活動(服務器):
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appstart);
tv = (TextView) findViewById(R.id.textView1);
try {
DatagramSocket clientsocket = new DatagramSocket(9876);
byte[] receivedata = new byte[1024];
DatagramPacket recv_packet = new DatagramPacket(receivedata, receivedata.length);
Log.d("UDP", "S: Receiving 1 sec...");
clientsocket.receive(recv_packet);
String rec_str = new String(recv_packet.getData());
tv.setText(rec_str);
Log.d(" Received String ", rec_str);
InetAddress ipaddress = recv_packet.getAddress();
int port = recv_packet.getPort();
Log.d("IPAddress : ", ipaddress.toString());
Log.d(" Port : ", Integer.toString(port)); clientsocket.close();
} catch (Exception e) {
Log.e("UDP", "S: Error", e);
}
}
這裏是我的PC客戶端的Java代碼:
public static void main(String args[]) throws Exception
{
while(true)
{
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("127.0.0.1");
System.out.println(IPAddress.getHostName());
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,9876);
clientSocket.send(sendPacket);
System.out.println(sendPacket.getPort());
clientSocket.close();
}
}
但是應用程序沒有收到任何東西,但OT拋出異常的onReceive()
功能在Android應用程序....
有沒有人知道爲什麼?
您收到的onReceive異常情況如何? – Edison
09-25 20:06:13.697:D/UDP(915):S:接收1秒... 09-25 20:06:13.707:E/UDP(915):S:錯誤 09-25 20 :06:13.707:E/UDP(915):android.os.NetworkOnMainThreadException –