我使用數據報協議爲使用客戶端 - 服務器交互的手機(使用j2me)編寫簡單的應用程序。移動應用程序將一些文本發送到服務器,服務器將該文本打印到標準輸出。下面是發送數據報(與移動電話)的代碼:用j2me發送數據報
String ip;
String port;
String msg;
//Loading ip, port and msg from the user input, I won't write it here, 'cause it
//does not matter
//Below is a simple code snippet for sending msg to the ip:port address
connection = (DatagramConnection) Connector.open(
"datagram://" + ip + ":" + port);
Datagram datagram = connection.newDatagram(msg.getBytes(),
msg.getBytes().length);
connection.send(datagram);
下面是用於接收數據報(與PC)的代碼:
DatagramSocket s = new DatagramSocket(7777);
DatagramPacket p = new DatagramPacket(new byte[1024], 1024);
s.receive(p);
System.out.println(new String(p.getData()));
所以,當我推出第一碼片段(用於發送數據報)使用模擬器,一切工作正常:服務器成功接收和打印數據報。但是當從移動電話發送數據報的程序時,數據報不會到達服務器。
當通過仿真器測試程序時,IP地址是我的本地網絡IP,當通過真實的手機測試時,IP取自http://www.whatismyip.com/。在模擬器測試中使用以前的IP時,數據報也不會到達服務器。 端口始終設置爲7777.
那麼,我可以解決這個問題嗎?
在手機上測試時,您是否觀察到任何異常?另外,它是否支持數據報?根據MIDP 2規範,該協議是可選的 – gnat
不,根本沒有例外 –