function testSocket() {
switch(plus.os.name) {
case "Android":
// Androidå¹³å°: plus.android.*
SocketChannel = plus.android.importClass("java.nio.channels.SocketChannel");
Selector = plus.android.importClass("java.nio.channels.Selector");
SelectionKey = plus.android.importClass("java.nio.channels.SelectionKey");
InetSocketAddress = plus.android.importClass("java.net.InetSocketAddress");
SocketAddress = plus.android.importClass("java.net.SocketAddress");
ByteBuffer = plus.android.importClass("java.nio.ByteBuffer");
Iterator = plus.android.importClass("java.util.Iterator");
// var iOException = plus.android.importClass("java.io.IOException");
var method = plus.android.importClass("java.lang.reflect.Method");
var OutputStreamWriter = plus.android.importClass("java.io.OutputStreamWriter");
//BufferedReader = plus.android.importClass("java.io.BufferedReader");
//var charset = plus.android.importClass("java.nio.charset");
//æµè¯æ¹è¯
var StrictMode = plus.android.importClass("android.os.StrictMode");
var Build = plus.android.importClass("android.os.Build");
if(Build.VERSION.SDK_INT > 9) {
var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
sendbuffer = ByteBuffer.allocate(100);
receivebuffer = ByteBuffer.allocate(100);
//v selectionKeys;
//iterator=new Iterator();
selectionKey = new SelectionKey();
client = new SocketChannel();
btyeSend = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6];
count1 = 0;
testThread();
break;
case "iOS":
// iOSå¹³å°: plus.ios.*
break;
default:
// å ¶å®å¹³å°
break;
}
}
function testThread() {
var App = plus.android.runtimeMainActivity();
var Thread = plus.ios.importClass("java.lang.Thread");
socketChannel = SocketChannel.open();
//ByteBuffer dst;
socketChannel.configureBlocking(false);
selector = Selector.open();
socketChannel.register(selector, SelectionKey.OP_READ | SelectionKey.OP_CONNECT | SelectionKey.OP_WRITE);
//socketAddress = new SocketAddress();
socketAddress = new InetSocketAddress("10.131.164.32", 1991);
socketChannel.connect(socketAddress);
var llflag = 0;
var Runnable = plus.android.implements("java.lang.Runnable", {
"run": function() {
//éæ©ä¸ç»é®ï¼å ¶ç¸åºçéé已为 I/O æä½åå¤å°±ç»ªã
//æ¤æ¹æ³æ§è¡å¤äºé»å¡æ¨¡å¼çéæ©æä½ã
//è¿åæ¤éæ©å¨ç已鿩é®éã
while(true) {
selector.select();
//System.out.println(selectionKeys.size());
selectionKeys = selector.selectedKeys();
plus.android.importClass(selectionKeys);
//selectionKeys.clear();
iterator = selectionKeys.iterator();
plus.android.importClass(iterator);
while(iterator.hasNext()) {
selectionKey = iterator.next();
if(selectionKey.isConnectable() && (llflag == 0)) {
console.log("client connect");
llflag = 1;
client = selectionKey.channel();
// 夿æ¤éé䏿¯å¦æ£å¨è¿è¡è¿æ¥æä½ã
// 宿奿¥åééçè¿æ¥è¿ç¨ã
if(client.isConnectionPending()) {
client.finishConnect();
console.log("å®æè¿æ¥!");
sendbuffer.clear();
// BufferedInputStream br = new BufferedInputStream(new FileInputStream(new File("D:\\BigData.zip")));
// byte[] b = new byte[2];
// br.read(b);
//b[0] = 53;
//b[1] = 54;
// b =[1,2,3];
sendbuffer.put(btyeSend);
sendbuffer.flip();
// System.out.println(System.currentTimeMillis());
client.write(sendbuffer);
//ystem.out.println(System.currentTimeMillis());
}
// client.register(selector, SelectionKey.OP_READ);
} else if(selectionKey.isReadable()) {
client = selectionKey.channel();
//å°ç¼å²åºæ¸ 空以å¤ä¸æ¬¡è¯»å
receivebuffer.clear();
//读åæå¡å¨åéæ¥çæ°æ®å°ç¼å²åºä¸
count = client.read(receivebuffer);
if(count > 0) {
receiveText = new String(receivebuffer.array(), 0, count);
console.log("客æ·ç«¯æ¥åæå¡å¨ç«¯æ°æ®--:" + receiveText);
// if (client.isConnectionPending()) {
client.finishConnect();
console.log("å®æè¿æ¥!");
sendbuffer.clear();
// BufferedInputStream br = new BufferedInputStream(new FileInputStream(new File("D:\\BigData.zip")));
var b;
b = receivebuffer.array();
var a = []
for(var i = 0; i < count; i++)
a[i] = b[i];
sendbuffer.put(a);
sendbuffer.flip();
// System.out.println(System.currentTimeMillis());
client.write(sendbuffer);
//ystem.out.println(System.currentTimeMillis());
// }
}
}
if(sendFlag == 1) {
client.finishConnect();
sendbuffer.clear();
//byte[] b = new byte[5];
// br.read(b);
var b_buff = [];
for(var i = 0; i < count1; i++) {
b_buff[i] = btyeSend[i];
}
sendbuffer.put(b_buff);
sendbuffer.flip();
client.write(sendbuffer);
sendFlag = 0;
}
}
//selectionKeys.clear();
}
}
});
//æ¹å¼1å¯å¨çº¿ç¨
App.runOnUiThread(Runnable);
}
function outValue() {
for(var i = 0; i < 16; i++)
btyeSend[i] = 0;
btyeSend[0] = 65;
btyeSend[1] = 66;
count1 = 2;
sendFlag = 1;
}