当前位置:编程学习 > C#/ASP.NET >>

Socket 文件下载问题

中午拿到一个用Socket下载文件,不会用
下面3个变量有疑问:
string hostName //不知道怎么填写
int port//任意不被占用的端口
string fileName//是否用"c://11111.jpg"格式
还有一个问题,下载地址的url在那里填写!
谢谢!!!!

下面是代码

//得到主机信息 

   IPHostEntry ipInfo=Dns.GetHostByName(hostName); 

   //取得IPAddress[] 

   IPAddress[] ipAddr=ipInfo.AddressList; 

   //得到ip 

   IPAddress ip=ipAddr[0]; 

   //组合出远程终结点 

   IPEndPoint hostEP=new IPEndPoint(ip,port); 

   //创建Socket 实例 

   Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 

   try 

   { 

   //尝试连接 

   socket.Connect(hostEP); 

   } 

   catch(Exception se) 

   { 

   MessageBox.Show("连接错误"+se.Message,"提示信息 

   ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 

  } 

  //发送给远程主机的请求内容串 

  string sendStr="GET / HTTP/1.1\r\nHost: " + hostName + 

  "\r\nConnection: Close\r\n\r\n"; 

   //创建bytes字节数组以转换发送串 

   byte[] bytesSendStr=new byte[1024]; 

   //将发送内容字符串转换成字节byte数组 

   bytesSendStr=Encoding.ASCII.GetBytes(sendStr); 

  try 

  { 

  //向主机发送请求 

  socket.Send(bytesSendStr,bytesSendStr.Length,0); 

  } 

  catch(Exception ce) 

   { 

  

   } 

   //声明接收返回内容的字符串 

   string recvStr=""; 

   //声明字节数组,一次接收数据的长度为1024字节 

   byte[] recvBytes=new byte[1024]; 

   //返回实际接收内容的字节数 

   int bytes=0; 

  //循环读取,直到接收完所有数据 

  while(true) 

  { 

  bytes=socket.Receive(recvBytes,recvBytes.Length,0); 

  //读取完成后退出循环 

  if(bytes〈=0) 

  break; 

  //将读取的字节数转换为字符串 

  recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes); 

  } 

  //将所读取的字符串转换为字节数组 

  byte[] content=Encoding.ASCII.GetBytes(recvStr); 

   try 

   { 

   //创建文件流对象实例 

   FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); 

  //写入文件 

  fs.Write(content,0,content.Length); 

  } 

  catch(Exception fe) 

   { 



   } 

   //禁用Socket 

   socket.Shutdown(SocketShutdown.Both); 

   //关闭Socket 

   socket.Close(); 

--------------------编程问答-------------------- string hostName //不知道怎么填写  <== IP地址,你需要连接的IP地址,比如192.168.0.1
int port//任意不被占用的端口       <== 你需要连接的Server的端口如 80 ,跟Server配套就如:  192.168.0.1:80
string fileName//是否用"c://11111.jpg"格式  <==你需要把接受到的内容写入到的文件位置,正如你所说
还有一个问题,下载地址的url在那里填写! <== 不是URL形式,这句话"  bytes=socket.Receive(recvBytes,recvBytes.Length,0); " 中的Bytes就是接收的内容 --------------------编程问答-------------------- 太长,没看完。
坐下来看同学们怎么说。 --------------------编程问答-------------------- 还是不明白,要是我要下载的文件地址是:http://img.bimg.126.net/photo/c7bckFJxdJxSwQLIy76HTQ==/1755840904721658663.jpg那在哪里写入程序。 --------------------编程问答-------------------- 晕,你这个跟SOCKET啥关系都没,这个网站又不提供Server跟端口以及方法给你调用.
楼主是要把图片抓取下来吧?
httpWebRequest.Get();

引用 3 楼 zenjj101 的回复:
还是不明白,要是我要下载的文件地址是:http://img.bimg.126.net/photo/c7bckFJxdJxSwQLIy76HTQ==/1755840904721658663.jpg那在哪里写入程序。
--------------------编程问答-------------------- 不可以用它来下载文件吗 --------------------编程问答-------------------- 可以,只要这个网站提供Server + Port + 方法给你调用(貌似不可能吧?除非是自己的网站,如果是自己的网站,哪还需要Socket,直接FTP共享)

引用 5 楼 zenjj101 的回复:
不可以用它来下载文件吗
--------------------编程问答-------------------- 这样啊。我还以为可以和HttpWebRequest一样 --------------------编程问答-------------------- 失望中。。。,还以为用它可以摆脱超过2G文件约束 --------------------编程问答-------------------- up --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,