我是套接字编程的新手,我正在尝试读取嵌套在网站目录中的在线dat文件。我可以连接到主网站,但不能连接到任何子目录或我试图在其中一个中访问的文本文件。
即我可以连接到www.mainsite.com但不能访问www.mainsite.com/dir1/dir2/textfile.dat。我想使用recv或read来阅读文本文件,我不介意以不同的方式访问它,比如说fdopen等...
我在gnu c中用cygwin在windows 7机器上写这个。
为了隐私,我将使用匿名网站名称。我正在使用的部分代码发布在下面 - 谢谢你:
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)
.....
答案 0 :(得分:1)
制作Web客户端比仅connect
目录复杂得多。连接到www.site.com
后,您需要write
对所需文件发出HTTP GET
请求,然后read
响应(应包含该内容)文件)。
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的确切工作方式不太感兴趣,可以查看cURL这是一个非常受欢迎的实现HTTP的库,让想要写的人(比如你)更容易生活简单的客户,没有陷入丑陋的细节。