socketChannel h5

来源:互联网 发布:音箱推荐 知乎 编辑:程序博客网 时间:2024/04/30 03:06
好不容易写出来的,以后做参考!
function shopping_socket_test(sendJson){sendJson = 'BARCODECERTIFY${"flow_no":"1","posno":"0001","flow_id":1,"barcode":"6933943500050","price":0,"qty":1}';var receiveMsgJson = "";var SocketChannel = plus.android.importClass("java.nio.channels.SocketChannel");var Selector = plus.android.importClass("java.nio.channels.Selector");var SelectionKey = plus.android.importClass("java.nio.channels.SelectionKey");var InetSocketAddress = plus.android.newObject("java.net.InetSocketAddress","192.168.1.135",2001);var ByteBuffer = plus.android.importClass("java.nio.ByteBuffer");var Iterator = plus.android.importClass("java.util.Iterator");var ByteArrayOutputStream = plus.android.importClass("java.io.ByteArrayOutputStream");var channel = null;var selector = null;try{channel = SocketChannel.open();plus.android.invoke(channel,"configureBlocking",false);selector = Selector.open();plus.android.invoke(channel,"register",selector,SelectionKey.OP_CONNECT);plus.android.invoke(channel,"connect",InetSocketAddress);var isOver = false;while(isOver == false){plus.android.invoke(selector,"select");var ite_keys = selector.selectedKeys();plus.android.importClass(ite_keys);var ite = ite_keys.iterator();while(plus.android.invoke(ite,"hasNext")){var selected_key = plus.android.invoke(ite,"next");plus.android.invoke(ite,"remove");if(plus.android.invoke(selected_key,"isConnectable")){if(plus.android.invoke(channel,"isConnectionPending")){if(plus.android.invoke(channel,"finishConnect")){plus.android.invoke(selected_key,"interestOps",SelectionKey.OP_READ);var sendMessage = plus.android.invoke(sendJson,"getBytes","UTF-8");plus.android.invoke(channel,"write",ByteBuffer.wrap(sendMessage));}}else{plus.android.invoke(selected_key,"cancel");console.log("cancel")}}else if(plus.android.invoke(selected_key,"isReadable")){            var channel = plus.android.invoke(selected_key,"channel");            var buffer = ByteBuffer.allocate(1024);            var baos = new ByteArrayOutputStream();            var size = 0;            while ((size = plus.android.invoke(channel,"read",buffer)) > 0) {                  buffer.flip();                baos.write(buffer.array(),0,size);                  buffer.clear();              }              baos.close();            receiveMsgJson = baos.toString();            console.log(receiveMsgJson);            isOver = true;}}}}catch(e){//TODO handle the exceptionreceiveMsgJson = "error:服务器没有开启,请确认!";console.log(e);}finally{if(channel != null){            try {                channel.close();            } catch (e) {                                      console.log(e);            }                          }                 if(selector != null){            try {                selector.close();            } catch (e) {                console.log(e);            }        }}console.log(receiveMsgJson);return receiveMsgJson;}

0 0
原创粉丝点击