Posted on 2005-11-08 14:08
让变化成为计划的一部分 阅读(633)
评论(1) 编辑 收藏 所属分类:
J2ME
第一,同一个端口是不允许两个程序监听的。
参见注释:
Trying to bind to an already reserved local address causes an IOException to be thrown!
也就是说。调用(MessageConnection)Connector.open("sms://:5000"); 时就会抛出异常。
第二,(MessageConnection)Connector.open监听不同端口是没有问题的。比如http://www.cnblogs.com/Files/zhengyun_ustc/SimplePushRegistry.rar的例子,你就可以看出这一点。在midlet的startApp中,
protected void startApp() throws MIDletStateChangeException {
if (!init) {
init = true;
String[] conns =
PushRegistry.listConnections(false);
System.out.println("Found " + conns.length +
" connections.");
for(int ccnt=0; ccnt < conns.length; ccnt++){
DatagramHandler handler =
new DatagramHandler(conns [ccnt], this);
connectionHandlers.addElement(handler);
handler.start();
}
}
}
从而得到所有注册的连接,并转发给线程处理。线程就可以根据所传入的连接名称,自行打开:
public DatagramHandler(String c, PushSMSListner midlet){
try {
dgc = (DatagramConnection)Connector.open(c);
} catch (IOException x){
x.printStackTrace();
}
m_midlet = midlet;
}