⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadurl.java

📁 java21pro_source 21天学通java2全书源代码
💻 JAVA
字号:
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.io.*;
import java.net.*;
import java.util.*;

public class LoadURL {

    public LoadURL(String urlRequest) {
        SocketChannel sock = null;
        try {
            URL url = new URL(urlRequest);
            String host = url.getHost();
            String page = url.getPath();
            InetSocketAddress address = new InetSocketAddress(host, 80);
            Charset iso = Charset.forName("ISO-8859-1");
            CharsetDecoder decoder = iso.newDecoder();
            CharsetEncoder encoder = iso.newEncoder();

            ByteBuffer byteData = ByteBuffer.allocate(16384);
            CharBuffer charData = CharBuffer.allocate(16384);

            sock = SocketChannel.open();
            sock.configureBlocking(false);
            sock.connect(address);

            Selector listen = Selector.open();
            sock.register(listen, SelectionKey.OP_CONNECT +
                SelectionKey.OP_READ);

            while (listen.select(500) > 0) {
                Set keys = listen.selectedKeys();
                Iterator i = keys.iterator();
                while (i.hasNext()) {
                    SelectionKey key = (SelectionKey) i.next();
                    i.remove();
                    SocketChannel keySock = (SocketChannel) key.channel();
                    if (key.isConnectable()) {
                        if (keySock.isConnectionPending()) {
                            keySock.finishConnect();
                        }
                        CharBuffer httpReq = CharBuffer.wrap(
                            "GET " + page + "\n\r\n\r");
                        ByteBuffer request = encoder.encode(httpReq);
                        keySock.write(request);
                    } else if (key.isReadable()) {
                        keySock.read(byteData);
                        byteData.flip();
                        charData = decoder.decode(byteData);
                        charData.position(0);
                        System.out.print(charData);

                        byteData.clear();
                        charData.clear();
                    }
                }
            }
            sock.close();
        } catch (MalformedURLException mue) {
            System.out.println(mue.getMessage());
        } catch (UnknownHostException uhe) {
            System.out.println(uhe.getMessage());
        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        }
    }
       
    public static void main(String arguments[]) {
        LoadURL app = new LoadURL(arguments[0]);  
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -