2015-11-06 51 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 - 我知道,我很抱歉,但是這個系統太愚蠢了,如果你沒有足夠的信譽,它不會允許評論。我可以回答這個傢伙的問題,但需要更多信息。 :) –

相關問題