C 可以访问网站,但不能访问子目录中的文本文件

C 可以访问网站,但不能访问子目录中的文本文件,c,http,sockets,http-headers,cygwin,C,Http,Sockets,Http Headers,Cygwin,我是一个套接字编程新手,我正在尝试读取嵌套在网站目录中的在线dat文件。我可以连接到主网站,但不能连接到它的任何子目录,也不能连接到我试图在其中一个目录中访问的文本文件 ie我可以连接到www.mainsite.com,但不能连接到www.mainsite.com/dir1/dir2/textfile.dat。我想用recv或read读取文本文件,我不介意用其他方式访问它,比如说fdopen ect 我用GNUC和cygwin在Windows7机器上写这篇文章 为了保护隐私,我将使用匿名网站名称

我是一个套接字编程新手,我正在尝试读取嵌套在网站目录中的在线dat文件。我可以连接到主网站,但不能连接到它的任何子目录,也不能连接到我试图在其中一个目录中访问的文本文件

ie我可以连接到www.mainsite.com,但不能连接到www.mainsite.com/dir1/dir2/textfile.dat。我想用recv或read读取文本文件,我不介意用其他方式访问它,比如说fdopen ect

我用GNUC和cygwin在Windows7机器上写这篇文章

为了保护隐私,我将使用匿名网站名称。我使用的部分代码发布在下面-谢谢:

  if(getaddrinfo("www.mainwebsite.com","80"    /*this works as it stands and fails if  I use  
                  , &hints, &res)!=0)       www.mainwebsite.com/subdir/textfile.dat  */
  .......
  .......
  /*create new socket*/
int newsocket = socket( res->ai_family, res->ai_socktype, 0);
.....
int newconnect = connect(newsocket, res->ai_addr, res->ai_addrlen)
.....

制作一个web客户端比仅仅连接到目录要复杂得多。连接到
www.site.com
后,您需要
为所需文件编写
请求,然后
读取
响应(其中应包括文件内容)

GET
请求的文本如下所示:

const char *req = "GET /subdir/textfile.dat HTTP/1.1\r\nHost: www.site.com\r\nUser-Agent: myprogram\r\n\r\n";
write(newsocket, req, strlen(req));
这是一个超文本传输协议(HTTP)请求。如果你真的想知道HTTP是如何工作的,还有很多东西要学。从维基百科页面开始,然后从那里扩展


如果您对理解HTTP的具体工作方式不太感兴趣,您可以研究一下哪一个是实现HTTP的非常流行的库,这使人们(像您一样)的生活变得更加轻松他们希望编写简单的客户端而不涉及丑陋的细节。

制作一个web客户端比只连接到目录要复杂得多。连接到
www.site.com
后,您需要
为所需文件编写
请求,然后
读取
响应(其中应包括文件内容)

GET
请求的文本如下所示:

const char *req = "GET /subdir/textfile.dat HTTP/1.1\r\nHost: www.site.com\r\nUser-Agent: myprogram\r\n\r\n";
write(newsocket, req, strlen(req));
这是一个超文本传输协议(HTTP)请求。如果你真的想知道HTTP是如何工作的,还有很多东西要学。从维基百科页面开始,然后从那里扩展


如果您对了解HTTP的具体工作方式不太感兴趣,您可以研究一下哪一种是非常流行的实现HTTP的库,这使得像您这样希望编写简单客户机而不涉及难看细节的人的生活变得更加轻松。

谢谢,这非常有效。看起来你可以使用所有的HTTP命令,比如通过发送函数GET,然后使用recv来读取我试图打开的文件。(跳舞的班纳纳表情符号)!谢谢,效果很好。看起来你可以使用所有的HTTP命令,比如通过发送函数GET,然后使用recv来读取我试图打开的文件。(跳舞的班纳纳表情符号)!