一个简单的java编程的问题,求高人。。。。。

ud_willsmith 2011-09-28 09:32:43
import java.io.*;
import java.net.*;

public class ReadClient {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
Socket clientSocket=new Socket("www.sina.com",80);
System.out.println("Client:"+clientSocket);
DataOutputStream outbound=new DataOutputStream(clientSocket.getOutputStream());
DataInputStream inbound=new DataInputStream(clientSocket.getInputStream());
InputStreamReader inS=new InputStreamReader(inbound);
File f=new File("sina.html");
FileOutputStream fOut=new FileOutputStream(f);
PrintStream p=new PrintStream(fOut);
outbound.writeBytes("GET /HTTP/1.0\r\n\r\n");
int c;
while((c=inS.read())!=-1)
p.print((char)c);
inS.close();
outbound.close();
inbound.close();
clientSocket.close();
}
catch(UnknownHostException uhe)
{
System.out.println("UnknowHostException:"+uhe);

}
catch(IOException ioe)
{
System.out.println("IOException:"+ioe);
}
}

}
这个是我写的一个java程序,目的是为了抓取www.sina.com首页的文本信息,然后写到本地的一个叫做sina.html的文件中,但是总是不成功,特别是对于里面outbound.writeBytes("GET /HTTP/1.0\r\n\r\n");这句话不是很理解,请教一下"GET /HTTP/1.0\r\n\r\n"到底是什么意思呢???谢谢啦!
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_bird_0001 2011-09-28
  • 打赏
  • 举报
回复
请求头的内容以":"显示值,在firebug中复制的请求头没用":",不好意思
new_bird_0001 2011-09-28
  • 打赏
  • 举报
回复
是http协议的get请求格式,http协议底层是tcp协议,缺省端口为80端口,在浏览器地址栏中输入http://www.sina.com,浏览器首先做一个dns广播,认识www.sina.com这个域名的服务器会给浏览器发送www.sina.com这个域名对应的ip地址,查到ip后,浏览器做了一个到www.sina.com这台机器80端口的tcp连接,然后发送字符串“GET /HTTP/1.0"及其他请求头,请求以两个回车换行符(\r\n\r\n)结尾,GET /HTTP/1.0表示用http1.0协议get服务器上的默认网页,请求头的内容大致是以下的字符串:
GET /HTTP/1.0\r\n
Host www.sina.com\r\n
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2\r\n
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language zh-cn,zh;q=0.5\r\n
Accept-Encoding gzip, deflate\r\n
Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7\r\n
Connection keep-alive\r\n
Cookie BAIDUID=633E06D63F925EAB7C3F9600A5BAC3C5:FG=1\r\n
Cache-Control max-age=0\r\n
\r\n
然后服务器给了www.sina.com的html代码,浏览器将html代码解释为网页,具体的东西要看http协议
风尘中国 2011-09-28
  • 打赏
  • 举报
回复
GET /HTTP/1.0\r\n\r\n
是HTTP协议要求的一部分,这个需要研究HTTP协议了
文献综述 计算机科学与技术 基于 JAVA 的模拟 ATM 系统的设计与实现 ATM 是 Automatic Teller Machine 的缩写,即自动柜员机。它是有计算机控制的持 卡人自我服务型的金融专用设备。 ATM 机可以向持卡人提供提款、存款、查询余额、更 改密码等功能。ATM 不仅能接受本行本地卡,还可以通过网络功能接受异地卡、他行卡, 同时为持卡人提供每日 24 小时服务。 随着 Internet 的蓬勃发展,ATM 网上银行作为电子商务的一种形式正以方便、快捷 的优势,逐步成为新兴的经营模式和理念,人们已经不再满足于排队等待办理各种业务, 而是渴望着能够充分享受网络所带来的更加多的便利。ATM 银行系统正适应了当今社会快 节奏地生活,使顾客可以方便快捷轻松地办理各种实物银行所能办理的各种业务,大大节 约了时间和实物银行所需的人力,物力,财力等[1]。 一、ATM 系统 模拟 ATM 系统就是对提款机操作系统在个人 PC 上及主流操作平台中的编程实现,其开 发主要包括后台数据库的建立和维护及前端应用程序的开发制作两个方面。用户在 ATM 客 户端登陆,实现取款、查询、转账、密码修改等业务操作,银行管理员在后台实现对银行 数据库信息的增删改查等操作。 二、ATM 系统使用的开发语言   人们在 ATM 系统的开发时,使用了各种不同的计算机语言,本系统采用 Java 语言作 为开发语言,因为 Java 语言是一个具有简单、面向对象、多线程、分布性、体系结构中 立、安全性等方面优点的语言。  Java 语言由理解和信奉网络计算梦想的一个小巧而专注的开发组设计的,虽然该语言 最初的实施方案有点缺陷,但为了这个梦想,设计者们很少在技术上妥协,结果诞生了一 种专为以相互通信为主要目的的设备而设计的语言。其许多技术上的优点都可能会引导嵌 入系统开发者选择 Java。 优点一,Java 与处理器无关。传统上,嵌入程序就是针对特定的微处理器设计并在其 上运行的,而 C 语言程序的可移植性则可通过编译或交叉编译来保障。但是利用 Java,一 个程序可以存储在一个系统上,而被下载并运行在完全不同的另一个系统上;设备可能从 不同地方下载一些程序在一个处理器上运行,或者不同的处理器运行同一个程序,并通过 网络在相互间传递数据。使用 Java一个嵌入式系统就可能成为一个通用的通信设备,能 下载并运行能完成特定任务的程序。 优点二,Java 是一种纯粹面向对象的语言,Java 类被组织成一个等级层次,在层次结 构中,一个子类能够继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类 的功能。其对象模型是能定义对应真实事物的数据结构,使得程序的任务和任务如何实现 二者之间的转换变得基本上透明。 优点三,由于有了 JVM,一个 Java 应用程序与操作系统或硬件完全隔绝,因此计算机 病毒或其他作祟的代码就很难获得对设备的控制。其虚拟机是主机设备和那些可能难以确 定其质量和可靠性的软件之间的一个保护层[2]。 优点四,JBuilder 继承了 C++Builder/Delphi 的特点,在可视化上使用简便。由于 Java 本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高, 支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要 的地位。 三、ATM 系统的发展及未来研究方向  为提高国内新增 ATM 应用效果,要求国内银行必须紧跟 ATM 技术发展动态, 开辟 ATM 新 的业务运用领域。 1.安全性能提高 主要用于顾客身份合法性识别和认证上采用更加先进安全的技术。例如: (1)美国新泽西一家公司发明了虹膜识别技术,利用人的瞳孔与指纹的独一无二性来识别 顾客身份。 (2)德国西门子公司带有容貌识别系统的 ATM,机器只有在看到持卡人本人的容貌后才会 出钞,有效避免持卡人因卡遗失、密码泄漏造成资金损失。 (3)NCR 最新推出的自动出纳机是"对讲机",用录制好的信息回答一些简单问题。视频 自动出纳机组可在视频显示盘上看到讲话人的头像、磁带,可用于提醒顾客关于银行提供 的诸多服务[3]。 2.应用领域扩大及新功能的增加,为用户提供更加方便快捷的服务 (1)上网。即将开发的网络柜员机,使用户可以通过 ATM 登录 Internet,获取个人帐户历 史信息,并在银行间自由调度资金,也可通过任何一台网络 ATM 支付帐单。 (2)手机取款。法国电信公司推出用手机在 ATM 上取款,还可通过手机买票, 订票费记录 在电话费帐单上。 (3)投资理财。建立客户关系管理系统,经过对客户数据的深入挖掘分析,向客户提供投资 理财方案,提高 ATM 服务功能,减少柜台服务压力。 (4)兑换硬币。在日本,中小学生把零用

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧