2015-11-06 47 views
0

我真的很陌生,尤其是使用套接字编程,所以基本上我已经在我的本地机器上设置了一个Apache服务器,在这里我托管了多个音频/视频/ txt文件。列出服务器上的所有文件使用C

现在我想显示使用C.这些文件(就像LS在Linux -l但它应该是从服务器)

我能够获取本地服务器的HTML内容,但是那是后话不是我在寻找。

这是我从本地主机获取html内容代码

#include<stdio.h> 
#include<string.h>  
#include<sys/socket.h> 
#include<arpa/inet.h> 

int main() 
{ 
    int socket_desc; 
    struct sockaddr_in server; 
    char *message , server_reply[6000]; 

    //Create socket 
    socket_desc = socket(AF_INET , SOCK_STREAM , 0); 
    if (socket_desc == -1) 
    { 
     printf("Could not create socket"); 
    } 


    server.sin_addr.s_addr = inet_addr("192.168.1.3"); // localhost ip 
    server.sin_family = AF_INET; 
    server.sin_port = htons(80); 




    //Connect to remote server 
    if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0) 
    { 
     puts("connect error"); 
     return 1; 
    } 

    puts("Connected\n"); 

    //Send some data 
    message = "GET /?st=1 HTTP/1.1\r\nHost: 192.168.1.3\r\n\r\n"; 
    if(send(socket_desc , message , strlen(message) , 0) < 0) 
    { 
     puts("Send failed"); 
     return 1; 
    } 
    puts("Data Send\n"); 

    //Receive a reply from the server 
    if(recv(socket_desc, server_reply , 6000 , 0) < 0) 
    { 
     puts("recv failed"); 
    } 
    puts("Reply received\n"); 
    puts(server_reply); 

    return 0; 
} 

回答

0

问:你尝试运行“服务器A”这个应用程序,并获得“服务器B”文件的列表?

- 感谢您的更新。

这是问题所在,你不能通过发送一个标准的http请求从一台服务器到另一台服务器获取目录列表。您需要在“服务器B”上进行互惠申请。你有直接访问该服务器,还是这是一个公共服务器,你正试图镜像它?

+1

我会从客户端运行它并从服务器获取文件列表。 – kkard

+1

仅供参考 - 像这样的评论是根据“评论”,而不是答案。 – Brian

+1

@brian - 我知道,我很抱歉,但是这个系统太愚蠢了,如果你没有足够的信誉,它不会允许评论。我可以回答这个家伙的问题,但需要更多信息。 :) –

相关问题