读取argv[0]参数中输入网址的内容using System; using System.Net; using System.Text; class DownloadDataTest { public static void Main (string[] argv) { WebClient wc = new WebClient(); byte[] response = wc.DownloadData(argv[0]); Console.WriteLine(Encoding.ASCII.GetString(response)); } }
using System.Net;
using System.Text;
class DownloadDataTest
{
public static void Main (string[] argv)
{
WebClient wc = new WebClient();
byte[] response = wc.DownloadData(argv[0]);
Console.WriteLine(Encoding.ASCII.GetString(response));
}
}
wc.DownloadFile("http://127.100.1.4/zwx/cts/cts.exe","cts.exe");
wc.DownloadFile("http://127.100.1.4/zwx/cts/cts.pdb","cts.pdb");
我的意思是怎么建立Http连接?如何通过Http的形式向远程发数据?如何接受从远程返回的数据?
都是通过Http的形式!谢谢!
根据要求选择方法是post还是get,再create webrequest实例就好了.
msdn自带例子的,去看吧
您能给给实例看一下吗?
是呀,因为我是新手.没办法呀?谁让我技不如人呢?
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace ChinaxTest.HttpServerClass
{
public delegate void ServerStartEventHandler(object sender,ServerStartEventArgs e);
public delegate void ClientContentedEventHandler(Socket sender,ClientConnectedEventArgs e);
/// <summary>
/// HttpServiceClass 的摘要说明。
/// </summary>
public class HttpServer
{
public event ServerStartEventHandler OnServerStartEventHandler;
public event ClientContentedEventHandler OnResMessage;
public HttpServer()
{
} #region 私有成员
private Socket m_socket; private int _Port=8080;//侦听端口 private long RecSize=0; private long SendSize=0;
private bool _IsRuning;
#endregion #region 属性定义
/// <summary>
/// 侦听端口
/// </summary>
public int Port
{
get
{
return _Port;
}
set
{
_Port=value;
}
}
/// <summary>
/// 指示服务是否正在运行
/// </summary>
public bool IsRuning
{
get
{
return this._IsRuning;
}
set
{
this._IsRuning=value;
}
}
#endregion public void StartService(int port)
{
this.Port=port;
this.StartService();
} /// <summary>
/// 启动服务
/// </summary>
public void StartService()//开始服务
{
if(this.IsRuning)
{
throw new InvalidOperationException();
}
m_socket=new Socket(System.Net.Sockets.AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
m_socket.Bind(new IPEndPoint(IPAddress.Any, this.Port));
m_socket.Listen((int)SocketOptionName.MaxConnections); this.IsRuning=true;
ThreadPool.QueueUserWorkItem(new WaitCallback(OnStart));
}
public void SendResult(string result,Socket socket)
{
System.Text.StringBuilder sbResult=new System.Text.StringBuilder();//根据HTTP协议发送
//****************************************************************报头部分
sbResult.Append("HTTP/1.1 200 OK\n");
sbResult.Append("Date: "+DateTime.Now.ToUniversalTime().ToString()+"\n");
sbResult.Append("Server: ChinaxTest/1.2.6 \n");
sbResult.Append("Connection: close \n");
sbResult.Append("Content-Type: text/html \n");
sbResult.Append("\n");
sbResult.Append(result);//内容
try
{
byte[] resultBytes=System.Text.Encoding.Default.GetBytes(sbResult.ToString());
socket.Send(resultBytes);
}
catch
{
}
socket.Close();
} public void StopService()//停止服务
{
if(!this.IsRuning)
{
return;
}
try
{
this.m_socket.Close();
}
catch
{ }
finally
{
this.m_socket=null;
}
Thread.Sleep(100);
this._IsRuning=false;
} #region 内部使用方法
private void OnStart(Object unused)
{
while(this.IsRuning)
{
try
{
Socket acceptSocket=this.m_socket.Accept();
ThreadPool.QueueUserWorkItem(new WaitCallback(OnAccept),acceptSocket);
}
catch
{
Thread.Sleep(100);
}
}
}
private void OnAccept(object socket)
{
Socket sourceSocket=(Socket)socket;
try
{
byte[] recBytes=new byte[1024];
sourceSocket.Receive(recBytes,recBytes.Length,0);
if(this.OnResMessage!=null)
{
ClientConnectedEventArgs e=new ClientConnectedEventArgs(recBytes);
this.OnResMessage(sourceSocket,e);
}
}
catch
{
} }
#endregion
}
}
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.Web;namespace ChinaxTest.HttpServerClass
{
public enum HttpMethod
{
POST,
GET
}
/// <summary>
/// HTTP协议解析类
/// </summary>
public class HttpRequest
{
private string _Url;
private HttpMethod _Method;
private NameValueCollection _QueryString;
private string _FileName; public HttpRequest(byte[] sourceBytes)
{
this.HeaderBytes=sourceBytes;
this.InitRequest();
this.FillParamer();
} #region 属性定义
public NameValueCollection QueryString
{
get
{
if(this._QueryString==null)
{
this._QueryString=new NameValueCollection();
}
return _QueryString;
}
}
/// <summary>
/// 获取请求URL地址
/// </summary>
public string Url
{
get
{
return _Url;
}
set
{
_Url=value;
}
}
/// <summary>
/// 获取请求文件名
/// </summary>
public string FileName
{
get
{
return _FileName;
}
set
{
_FileName=value;
}
} /// <summary>
/// 请求类型,POST OR GET
/// </summary>
public HttpMethod Method
{
get
{
return _Method;
}
set
{
_Method=value;
}
} private byte[] _HeaderBytes;
/// <summary>
/// 源HTTP头
/// </summary>
private byte[] HeaderBytes
{
get
{
return _HeaderBytes;
}
set
{
_HeaderBytes=value;
}
}
#endregion #region 解析HTTP头提供的方法
/// <summary>
/// 解析HTTP头内容
/// </summary>
private void InitRequest()
{
ByteParser fristLine=new ByteParser(this.HeaderBytes);
;
ByteString myByteString=fristLine.ReadLine();
ByteString[] elems=myByteString.Split(' '); if(elems==null||elems.Length<=0)
{
return;
}
if(elems.Length>0)
{
if(elems[0].GetString().Trim().ToUpper()=="POST")
{
this.Method=HttpMethod.POST;
}
else
{
this.Method=HttpMethod.POST;
}
}
if(elems.Length>1)
{
this.Url=elems[1].GetString().ToString().Trim().Replace(@"\","/");
}
else
{
this.Url="";
}
}
private void FillParamer()
{
if(this.Url=="")
{
return;
}
int paramerStart=this.Url.LastIndexOf("?");
string paramerStr="";
int nameStart=0;
int nameLength=this.Url.Length;
if(this.Url.Substring(0,1)=="/")
{
nameStart=1;
}
if(paramerStart<=0)
{
this.FileName=this.Url.Substring(nameStart,nameLength);
return;
}
else if(paramerStart>1)
{
this.FileName=this.Url.Substring(nameStart,paramerStart-1);
}
paramerStr=this.Url.Substring(paramerStart+1);
string[] paramerElems=paramerStr.Split('&');
if(paramerElems==null||paramerElems.Length<1)
{
return;
}
for(int i=0;i<paramerElems.Length;i++)
{
string paramer=paramerElems[i];
if(paramer=="")
{
break;
}
string[] tempParamerList=paramer.Split('=');
if(tempParamerList.Length>1)
{
this.QueryString.Add(tempParamerList[0].Trim(),tempParamerList[1].Trim());
}
}
}
#endregion #region 获取URL参数提供的方法
#endregion
}
}
您好,非常感谢您的回复,请问您能用Webrequest和Webreponse进行发送和接收吗?谢谢!