- /**
- * nio开发
- * 通过参数指定的主机端口发送一段请求报文,然后读取和打印报文
- * 需要接受主机名和监听端口作为输入参数
- * */
- import java.io.IOException;
- import java.net.UnknownHostException;
- import java.net.InetSocketAddress;
- import java.nio.ByteBuffer;
- import java.nio.CharBuffer;
- import java.nio.channels.SocketChannel;
- import java.nio.charset.Charset;
- import java.nio.charset.CharsetDecoder;
- import java.nio.charset.CharsetEncoder;
- public class ReadURL {
- public static void main(String args[]) {
- String host = args[0];
- int port = Integer.parseInt(args[1]);
- SocketChannel channel = null;
- try {
- // Setup
- InetSocketAddress socketAddress = new InetSocketAddress(host, port);
- Charset charset = Charset.forName("UTF-8");
- CharsetDecoder decoder = charset.newDecoder();
- CharsetEncoder encoder = charset.newEncoder();
- // Allocate buffers
- ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
- CharBuffer charBuffer = CharBuffer.allocate(1024);
- // Connect
- channel = SocketChannel.open();
- channel.connect(socketAddress);
- // Send request
- String request = "GET / /r/n/r/n";
- channel.write(encoder.encode(CharBuffer.wrap(request)));
- // Read response
- while ((channel.read(buffer)) != -1) {
- buffer.flip();
- // Decode buffer
- decoder.decode(buffer, charBuffer, false);
- // Display
- charBuffer.flip();
- System.out.println(charBuffer);
- buffer.clear();
- charBuffer.clear();
- }
- } catch (UnknownHostException e) {
- System.err.println(e);
- } catch (IOException e) {
- System.err.println(e);
- } finally {
- if (channel != null) {
- try {
- channel.close();
- } catch (IOException ignored) {
- }
- }
- }
- }
- }