困扰我多时的问题,大家来帮忙

lthu 2002-02-08 10:36:41
我想用socket将一个网页的内容拉下来,但是不成功,请大家帮忙提供代码。

这是我的代码:

public class TestSocket {
public static void main(java.lang.String[] args) {

try {

InetAddress addr = InetAddress.getByName("www.cnmaya.com");
Socket s = new Socket(addr,80);
//Socket s = new Socket("202.109.110.41",80);

DataInputStream sin =new DataInputStream(s.getInputStream());
DataOutputStream sout =new DataOutputStream(s.getOutputStream());

while (sin.available()!=0) {
System.out.print(sin.readByte());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdsean 2002-02-08
  • 打赏
  • 举报
回复
我哪里说要sin.avalilable()==0啦
你想取得页面信息没那么简单的,要写http头先,然后再取数据
试试我改写的这个程序
import java.net.*;
import java.io.*;
public class TestSocket {
public static void main(java.lang.String[] args) {

try {
// HTTP头
String [] httpHeader =
{
"GET / HTTP/1.1",
"User-Agent: Java1.3.0",
"Host: ",
"Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2",
"Connection: keep-alive"
};
InetAddress addr = InetAddress.getByName("www.csdn.net");
Socket s = new Socket(addr,80);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);

// Http
for (int i=0; i<httpHeader.length; i++)
{
dos.writeBytes(httpHeader[i]);
dos.writeByte(13);
dos.writeByte(10);
}
dos.writeByte(13);
dos.writeByte(10);
//输出
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String linein;
while ((linein = br.readLine()) != null)
System.out.println(linein);
}catch (Exception e) {
e.printStackTrace();
}
}
}
lthu 2002-02-08
  • 打赏
  • 举报
回复
thanks!

my mail:lthu@163.net
gdsean 2002-02-08
  • 打赏
  • 举报
回复
等我研究研究先;)
lthu 2002-02-08
  • 打赏
  • 举报
回复
1、如果改成sin.available()==0就变成无限等待
2、我不用URL的原因是我要控制我的某个端口

请帮忙再试一试。
lthu 2002-02-08
  • 打赏
  • 举报
回复
1、如果改成sin.available()==0就变成无限等待了;
2、我不用URL的原因是我要控制我的某个端口。

请帮忙试一试!

lthu 2002-02-08
  • 打赏
  • 举报
回复
1、如果改成sin.available()==0就变成无限等待了;
2、我不用URL的原因是我要控制我的某个端口。

请帮忙试一试!

gdsean 2002-02-08
  • 打赏
  • 举报
回复
sin.available()==0
所以没有得到输入流
你要是下载网页,使用URL类得了
URL myurl = new URL("adf.com");
InputStream ins = myurl.openStream();
...
lthu 2002-02-08
  • 打赏
  • 举报
回复
我试过了,谢谢!给分(分的多少不代表什么,是我对你的敬意 ^^)。
lthu 2002-02-08
  • 打赏
  • 举报
回复
先谢谢了,我试一试,你等会儿。

62,615

社区成员

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

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