服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用socket通道读取web页面

import java.io.ioexception;
import java.net.inetsocketaddress;
import java.net.unknownhostexception;
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 getwebpagedemo {
  public static void main(string args[]) throws exception {
    string resource, host, file;
    int slashpos;

    resource = "www.java2s.com/index.htm"
    slashpos = resource.indexof('/')// find host/file separator
    if (slashpos < 0) {
      resource = resource + "/";
      slashpos = resource.indexof('/');
    }
    file = resource.substring(slashpos)// isolate host and file parts
    host = resource.substring(0, slashpos);
    system.out.println("host to contact: '" + host + "'");
    system.out.println("file to fetch : '" + file + "'");

    socketchannel channel = null;

    try {
      charset charset = charset.forname("iso-8859-1");
      charsetdecoder decoder = charset.newdecoder();
      charsetencoder encoder = charset.newencoder();

      bytebuffer buffer = bytebuffer.allocatedirect(1024);
      charbuffer charbuffer = charbuffer.allocate(1024);

      inetsocketaddress socketaddress = new inetsocketaddress(host, 80);
      channel = socketchannel.open();
      channel.connect(socketaddress);

      string request = "get " + file + " /r/n/r/n";
      channel.write(encoder.encode(charbuffer.wrap(request)));

      while ((channel.read(buffer)) != -1) {
        buffer.flip();
        decoder.decode(buffer, charbuffer, false);
        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) {
        }
      }
    }

    system.out.println("/ndone.");
  }
}

扫描关注微信公众号