SocketChannel channel = null;
Charset charset = Charset.forName("GBK");//Java.nio.charset.Charset
//处理了字符转换问题。它通过构造CharsetEncoder和CharsetDecoder将字符序列转换成字节和逆转换。
CharsetDecoder decoder = charset.newDecoder();
try {
channel = (SocketChannel) key.channel();
//处理中文乱码
channel.write(charset.encode("GET" + "/HTTP/1.1" + "\r\n\r\n"));
//设置buffer缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
//假如客户端关闭了通道,这里在对该通道read数据,会发生IOException,捕获到Exception后,关闭掉该channel,取消掉该key
int count = channel.read(buffer);
StringBuffer buf = new StringBuffer();
//如果读取到了数据
if(count > 0){
//让buffer翻转,把buffer中的数据读取出来
buffer.flip();
buf.append(new String(charset.decode(buffer).array(), 0, count));
}
String msg = buf.toString();