| 发表于:2007-04-19 20:57:37 楼主 |
在j2me中如何解决发送短消息和多媒体的端口号冲突问题? 现象1:同时开mms与sms监听连接只有先开的有效。 例如: messageconnection mmsconn = (messageconnection) connector.open( "mms://:8888 "); mmsconn.setmessagelistener(this); messageconnection smsconn = (messageconnection) connector.open( "sms://:6666 "); smsconn.setmessagelistener(this); ..... public void notifyincomingmessage(messageconnection conn) { ... system.out.println( "start receive.. "); message msg = conn.receive(); system.out.println( "receive complete! "); ... } 这时若在8888端口收到multimessage则一切正常。若在6666端口收到testmessage或binarymessage则 message msg = conn.receive()不能执行。只有start receive..而无receive complete!(没有任何异常抛出) ps:就算没有mmsconn.setmessagelistener(this)同样不能接收sms消息。 反之亦然; 现象2:在发送mms时必须把所以监听连接关掉。若mms连接创建在sms连接之前,那么发送sms也要把所以 连接关掉。 例如: (1) messageconnection smsconn = (messageconnection) connector.open( "sms://:6666 "); smsconn.setmessagelistener(this); 。。。 messageconnection smssendconn = (messageconnection) connector.open( "sms://+xxxx:6666 "); ...... smssendconn.send(shortmessage); .. 这种情况正常。 (2) messageconnection mmsconn = (messageconnection) connector.open( "mms://:8888 "); smsconn.setmessagelistener(this); 。。。 messageconnection mmssendconn = (messageconnection) connector.open( "mms://+xxxx:8888 "); ...... mmssendconn.send(multimessage); .. 在发送时抛出io异常:connection closed.而经过测试,mmssendconn并没有关闭。但只要在发送前关掉mmsconn 即 mmsconn.close(); mmssendconn.send(multimessage); 则正常发送。 (3) messageconnection mmsconn = (messageconnection) connector.open( "mms://:8888 "); messageconnection smsconn = (messageconnection) connector.open( "sms://:6666 "); smsconn.setmessagelistener(this); 。。。 messageconnection smssendconn = (messageconnection) connector.open( "sms://+xxxx:6666 "); ...... smssendconn.send(shortmessage); .. 则情况同(2)发送前关掉mmsconn,smsconn则ok; |
|
|
|
|