我这个方法运行到-----测试下面的方法4----- 就不往下运行了,",这句"------------SocketClient成功返回-----
“没有打印出来。请大家帮我看看是什么问题。
public com.ksoft.util.TempObject run() {
try {
//打开Socket通道
SocketChannel client = SocketChannel.open();
//设置为非阻塞模式
client.configureBlocking(false);
//打开选择器
Selector selector = Selector.open();
//注册连接服务端socket动作
client.register(selector, SelectionKey.OP_CONNECT);
//连接
client.connect(ip);
//分配内存
ByteBuffer buffer = ByteBuffer.allocate(8 * 1024);
int total = 0;
while(selector.select() > 0) {
//selector.select();
Iterator iter = selector.selectedKeys().iterator();
while (iter.hasNext()) {
SelectionKey key = (SelectionKey) iter.next();
System.out.println("执行过的操作="+key.attachment());
iter.remove();
if (key.isConnectable()) {
SocketChannel channel = (SocketChannel) key
.channel();
if (channel.isConnectionPending())
channel.finishConnect();
channel.write(encoder.encode(CharBuffer.wrap(msg)));
channel.register(selector, SelectionKey.OP_READ);
}else if (key.isReadable()) {
Log.v( "sockettest", "进入读返回信息,使用对象");
SocketChannel channel = (SocketChannel) key
.channel();
channel.read(buffer);
buffer.flip();
byte[] b = buffer.array();
try {
Log.v( "sockettest","------测试下面的方法---------");
to = byteToBject(b);
Log.v( "取得结果了", "名字="+to.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Log.v( "sockettest","------------测试下面的方法2-----------");
buffer.clear();
Log.v( "sockettest","------------测试下面的方法3-----------");
}
}
}
Log.v( "sockettest","------------测试下面的方法4-----------");
} catch (IOException e) {
e.printStackTrace();
}
Log.v( "sockettest","------------SocketClient成功返回-----------");
return to;
}
public static com.ksoft.util.TempObject byteToBject(byte[] bytes) throws IOException, ClassNotFoundException{
com.ksoft.util.TempObject obj = new com.ksoft.util.TempObject();
Object obj2 = new Object();
Log.v( "sockettest","------------测试对象的使用-----------");
ByteArrayInputStream bi = new ByteArrayInputStream(bytes);
ObjectInputStream objectinput = new ObjectInputStream(bi);
obj = (com.ksoft.util.TempObject) objectinput.readObject();
Log.v( "sockettest","------------测试对象的使用完成-----------");
bi.close();
objectinput.close();
return obj;
}