| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2388 人关注过本帖
标题:获取网页内容的控制台程序 望指点
只看楼主 加入收藏
blackscorpio
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-18
收藏
 问题点数:0 回复次数:17 
获取网页内容的控制台程序 望指点
我试着做一个能取得并输出网页内容的windows控制台应用程序,可是始终不能成功,我是个新手,大家帮帮忙.
程序代码如下:
using System;
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Text;
namespace ss
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class socket
{
static void Main(string[] args)
{
string sip = args[0];//服务器IP地址
try
{
IPAddress hostadd =Dns.Resolve(sip).AddressList[0];
IPEndPoint ephost =new IPEndPoint(hostadd,80);
Socket cliensocket =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
cliensocket.Connect(ephost);
//建立socket
StreamReader file =File.OpenText("d:\\c\\c#\\ss.txt");
string file1;
string file2=null;
while((file1=file.ReadLine())!=null)
{
file2=file2+file1;
}
Console.WriteLine(file2);
//读取将要发送到服务器的数据,数据以文本文件形式存放在d:\\c\\c#\\ss.txt中

byte[] senddata = Encoding.ASCII.GetBytes(file2.ToCharArray());
cliensocket.Send(senddata,0,senddata.Length,SocketFlags.None);
//发送数据

byte[] redata = new byte[1024];
int i = cliensocket.Receive(redata,0,cliensocket.Available,SocketFlags.None);
string y = Encoding.ASCII.GetString(redata,0,i);
Console.WriteLine("Receive {0} bytes",i);
Console.WriteLine("data:{0}",y);
//接收并输出数据

cliensocket.Shutdown(SocketShutdown.Both);
cliensocket.Close();
//关闭socket

}
catch{}

}
}
}
搜索更多相关主题的帖子: 网页 控制台 获取 
2006-12-02 16:37
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

如果纯粹是下载网页,没必要用socket

WebClient webClient = new WebClient();
webClient.Credentials = CredentialCache.DefaultCredentials;
byte[] data = null;
string pageHtml = "";

try
{
data = webClient.DownloadData(uri);

Encoding loadCode = Encoding.GetEncoding("gb2312");
pageHtml = loadCode.GetString(data);
}

2006-12-02 17:47
blackscorpio
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-18
收藏
得分:0 


不是单纯的下载网页,我希望能够可控的向服务器发送HTTP请求,这个HTTP请求是有一个特殊的含义,所以不能用你的这个方法,只能用SCOKET.,帮帮忙.

2006-12-02 20:47
blackscorpio
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-18
收藏
得分:0 

自己顶一下,有没有人帮忙看看啊?

2006-12-03 10:25
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
以下是引用blackscorpio在2006-12-2 20:47:28的发言:


不是单纯的下载网页,我希望能够可控的向服务器发送HTTP请求,这个HTTP请求是有一个特殊的含义,所以不能用你的这个方法,只能用SCOKET.,帮帮忙.

谁说只能用 socket的!

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Accept = @"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
httpRequest.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; Alexa Toolbar)";
httpRequest.Headers.Add("Cookie", "B=0drjb7t2k48s4&b=3&s=m0; Q=q1=AAAAAAAAAAAAAA--&q2=RUIiOg--; CN_FP_TAB=todaytabs%3Dtodaytabscon%2C%2Copen%2Cend%7Cschtabs%3Dschtabscon%2C%2Copen%2Cend%7Ccdntabs%3Dcdntabscon%2C%2Copen%2Cend");
httpRequest.Timeout = 20000;
httpRequest.Accept = "zh-cn";

try
{
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream(), Encoding.GetEncoding(name));
string html = streamReader.ReadToEnd();

streamReader.Close();
httpResponse.Close();

return html;
}
catch (Exception ex)
{
LogInfo.LogMessage(logPath, "2nd request fail: " + ex.ToString());
return GetWebPage(url, 2);
}

2006-12-03 12:22
blackscorpio
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-18
收藏
得分:0 

NB!佩服!
不过我要发送的是类似这个:
GET /stu/admpost.asp%5C HTTP/1.0
Host: 218.9.77.146
User-Agent: Mozilla/4.0
Content-Length: 18
Content-Type: text/html
Translate: f
match=www&errors=0
你说Translate: f这句怎么定义?
写这个程序我找过很多资料了,你说的这个方法我也知道.做这个程序只是希望能了解HTTP协议的数据格式,当然你的方法简单清晰,但是版主大哥为什么就不能换个思路思考那?为什么老和我唱反调,你和socket有仇吗?

2006-12-03 16:41
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
很简单的事实,我只弄过简单的socket程序,没深入研究。
2006-12-03 16:43
blackscorpio
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-18
收藏
得分:0 
大哥,那你得吧得吧的和我说什么啊!给我加两万分,饶你一命!
2006-12-03 17:08
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
hehe , 你一楼没说要写 header
2006-12-03 17:43
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
被你刷了,你是刷QQ币的马甲。
2006-12-03 17:48
快速回复:获取网页内容的控制台程序 望指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026146 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved