小第我用vc+socket写了个客户端的程序,是想连接到服务器上,然后将asp文件输出的结果做一些计算现在的问题是,我一直无法得到网页文件,连html文件都得不到,服务器返回是404,找不到文件
我的请求头是这样的GET /bbs/dl_buy.asp HTTP/1.1\r\n
Host: 61.129.70.172\r\n
Accept: */*\r\n
Referer: www.acgmemories.net/bbs/\r\n
User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)\r\nConnection:Keep-Alive\r\n
Cache-Control: no-cache\r\n
Range: bytes=0- \r\n\r\n
而使用flashget就可以得到这个文件,而且flashget的日志中,和我的请求头只有几个地方的不同。另外,还有个问题,如果我使用域名的方式,就可以得到文件,如浏览器里输入
www.acgmemories.net/bbs/dl_buy.asp,是可以的
但使用
http://61.129.70.172/bbs/dl_buy.asp,就不行了如果是域名把地址转了,为什么flashget可以?所以我想知道,如何得到我想要的文件?

解决方案 »

  1.   

    \r\n 对吗?
    换成
    '\x0d'
    '\x0a'
    看看
      

  2.   

    不好意思,最近一直没时间来看帖 okoooo(GDoXB) 
    说的对,有人曾跟我说过,那个空间是没有ip(虽然不太明白这个的意思),要访问只能通过域名,所以这个问题也就转化为域名解析了下面是连接服务器的部分代码,struct sockaddr_in  ServerSocket;    // 连接到的位置
    ServerSocket.sin_addr.s_addr = inet_addr (strIP);
    ServerSocket.sin_family=AF_INET;
    ServerSocket.sin_port=htons(HttpPort);在这里,我不知道怎样处理域名与ip,ServerSocket.sin_addr.s_addr 好象只接受ip字符串,而不接受域名哪位大哥能说说如何通过域名连接服务器?// 准备socket
    (*sock)=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
           
    if ((*sock)==INVALID_SOCKET)
    {
    AfxMessageBox("Error when socket");
    return FALSE;
    }
    /// 准备连接信息
    struct sockaddr_in  ServerSocket;    // 连接到的位置
    ServerSocket.sin_addr.s_addr = inet_addr (strIP);
    ServerSocket.sin_family=AF_INET;
    ServerSocket.sin_port=htons(HttpPort);  // 连接
    if (connect((*sock), (const struct sockaddr *)&ServerSocket, sizeof(ServerSocket))==SOCKET_ERROR)
    {
    AfxMessageBox("第一次连接失败,准备第二次连接");
    if (connect((*sock)
    ,(const struct sockaddr *)&ServerSocket
    ,sizeof(ServerSocket))==SOCKET_ERROR)
    {
    closesocket((*sock));
    AfxMessageBox("连接失败");
    return FALSE;
    }
    }