Socket 文件下载问题
中午拿到一个用Socket下载文件,不会用下面3个变量有疑问:
string hostName //不知道怎么填写
int port//任意不被占用的端口
string fileName//是否用"c://11111.jpg"格式
还有一个问题,下载地址的url在那里填写!
谢谢!!!!
下面是代码
--------------------编程问答-------------------- string hostName //不知道怎么填写 <== IP地址,你需要连接的IP地址,比如192.168.0.1
//得到主机信息
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();
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();
--------------------编程问答-------------------- 不可以用它来下载文件吗 --------------------编程问答-------------------- 可以,只要这个网站提供Server + Port + 方法给你调用(貌似不可能吧?除非是自己的网站,如果是自己的网站,哪还需要Socket,直接FTP共享)
--------------------编程问答-------------------- 这样啊。我还以为可以和HttpWebRequest一样 --------------------编程问答-------------------- 失望中。。。,还以为用它可以摆脱超过2G文件约束 --------------------编程问答-------------------- up --------------------编程问答--------------------
补充:.NET技术 , C#