做了幾次小練習:下面開始做網路編程方面的準備
寫j2me的網路程式,可能與PC上有些區別:
1,使用的庫:
j2me要使用javax.microedition.io.*;
PC要上使用java.net.*;
2,所使用的類不同:
PC: Server side:
import java.io.*;
import java.net.*;
try
{
DatagramSocket ds = new DatagramSocket(10000);
while(true)
{
byte [] inbuf = new byte[1024];
DatagramPacket inpacket = new DatagramPacket(inbuf, inbuf.length);
ds.receive(inpacket);
//String sout = new String(inbuf, 0, 0, inpacket.getLength());
String sout = new String(inbuf, inpacket.getLength());
System.out.println(sout);
}
}
catch(SocketException e)
{
System.out.println("can't open network");
}
catch(IOException e)
{
System.out.println("can't read data");
}
J2ME:Client Side:
import javax.microedition.io.*;
DatagramConnection dc = null;
String destAddr = "datagram://192.168.1.100:10000";
try
{
String sout = "MIDlet Test String";
byte buf[] = sout.getBytes();
dc = (DatagramConnection)Connector.open(destAddr);
Datagram gram = dc.newDatagram(buf, buf.length, destAddr);
dc.send(gram);
dc.close();
}
catch(Exception e)
{
System.out.println("io error!");
}
但是問題仍出現:
1,在WTK的通用模擬器上,資料包無法發送到PC的伺服器上,而在手機上可以正確發送。
於是想找一個nokia自己的模擬器來用。
到Nokia網站上,竟然找不到傳說中的Nokia Developer's suite 3.0 for j2me
再輾轉到j2medev 的網站,果然有下載。
安裝NDS3.0竟提示我沒有jre,這不是扯淡嘛,明明有的,都裝N個java工具,都正常找到,沒辦法換一台機器,依然如舊,
再換一台機器,仍是這個問題,算了不管他,裝上才說,裝上好,手工在path裡加上了java的那一堆path(jdk/jre),運行
NDS,提示:Deployed tools initialize failed.不管他,先去eclipse上載入NDS3的模擬器。載入成功,測試一個MIDlet網路
用戶端程式,成功發出資料包。目的達到,沒有興趣再去研它NDS3與eclipse的相容性。java在我眼裡就是一堆牽強的組合,
雖然說一處編譯,四處運行,但什麼問題也都可能發生。
2,每次網路發送時,都有安全提示。據經驗來看,應該是數位簽章,認證之類的原因
使用WTK的sign工具,完全可以。