当前位置:  技术问答>java相关

java socket 问题

    来源: 互联网  发布时间:2015-02-20

    本文导语:  我想用下面一段程序的到sohu首页的源代码,为何不行?谢谢!  import java.io.*;  import java.net.*;  import java.util.*; public class http{      private static final int HTTP_PORT=80;    public static void main(String args[]){       ...

我想用下面一段程序的到sohu首页的源代码,为何不行?谢谢!
 import java.io.*;
 import java.net.*;
 import java.util.*;
public class http{
     private static final int HTTP_PORT=80;
   public static void main(String args[]){
         
         String              host="www.sohu.com";
         InetAddress         hostaddress;
         Socket              socket;
         BufferedReader      socketinput;
         DataOutputStream    socketoutput;
             
       try{
      hostaddress=InetAddress.getByName(host);
      System.out.println("正在连接服务器"+hostaddress+"..."+"rn");
      socket=new Socket(hostaddress,HTTP_PORT);
      socket.setSoTimeout(10000);
      try{          
socketinput=new  BufferedReader(new InputStreamReader(socket.getInputStream()));
        socketoutput=new DataOutputStream(socket.getOutputStream());
        socketoutput.writeBytes("GET  /  /HTTP/1.1 rn");
        while(socketinput.readLine()!=null){
                   System.out.println(socketinput.readLine()); 
                   continue;
                    } 
        }finally{
           socket.close();
               }
      }
    
    catch(Exception e){
       System.out.println("......出现错误!");
            }
               
             }
      

                  }  

|
我想了想.
觉得用套接字,根据http协议获取网页内容是可行的.
但是有对这一程序来说就有很大的局限.
因为:
The most common form of Request-URI is that used to identify a
   resource on an origin server or gateway. In this case the absolute
   path of the URI MUST be transmitted (see section 3.2.1, abs_path) as
   the Request-URI, and the network location of the URI (net_loc) MUST
   be transmitted in a Host header field. For example, a client wishing
   to retrieve the resource above directly from the origin server would
   create a TCP connection to port 80 of the host "www.w3.org" and send
   the lines:

          GET /pub/WWW/TheProject.html HTTP/1.1
          Host: www.w3.org

   followed by the remainder of the Request. Note that the absolute path
   cannot be empty; if none is present in the original URI, it MUST be
   given as "/" (the server root).

所以你的socketoutput.writeBytes("GET  /  /HTTP/1.1 rn");
对于sohu是可行的,但是对于其它网站就不一定了.
所以我建议用另一种方法.

import java.io.*;
import java.net.*;
import java.util.*;

public class GetPage{
    public static void main(String args[]){
        String host="http://www.sina.com.cn/";
        try{          
          URL address=new URL(/tech-qa-java/host/index.html); 
          URLConnection connection=address.openConnection();
          connection.setUseCaches(true); 
          connection.setDoOutput(true); 
          
          BufferedReader in =new  BufferedReader(new InputStreamReader(connection.getInputStream()));
           while(in.readLine()!=null){
                 System.out.println(in.readLine()); 
           } 
        }
       catch(Exception e){
         System.out.println("Error");
       }
   }
}  





|
try this
Properties props = System.getProperties();
props.put("http.proxyHost", "proxyhostname");
props.put("http.proxyPort", "proxyhostport");

    
 
 

您可能感兴趣的文章:

  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • Java Socket类库 Java Sockets
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • 请大家推荐一下java里socket编程的资料。
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • JAVA中的 SOCKET能否与DELPHI中的 SOCKET进行通信
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • help! JAVA下有类似VC++ 下的socket 类吗?请各位高手看一下!!
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • 怎么样利用Socket进行Java网络编程
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • 有谁有java的Socket编程资料?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • JAVA网络编程(socket),用什么工具开发?怎么配置环境?
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 我现在刚刚学到JAVA的线程和socket,请问《JAVA 2宝典》和《JAVA核心技术卷2:高级特性》哪本书讲得比较好?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • linux下socket链接问题(java)
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • vc通过socket发送数据给java的问题
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • Java-IrDA socket API
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 怎么样利用Socket进行Java网络编程 iis7站长之家
  • java新手的问题,java高手帮忙...
  • 低级问题:.java文件交付用户怎么运行,难道也是DOS下:java xx.java?有没有.exe?
  • 请各位java高手几个java有关的问题?
  • java.sql.Date和java.uitl.Date的问题?
  • 问大哥大姐们个问题啊,小第编了自己的第一个JAVA问题。用JAVAC编译能通过啊!可是用JAVA不能执行啊!
  • 最入门级的java问题,如何运行HelloWorld.java
  • 请教一些JAVA的基本问题,初学JAVA有些迷糊,帮帮忙!总迷糊实在受不了了!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3