2011-10-23 14 views
1

私はソケットプログラミングの初心者で、ウェブサイトディレクトリにネストされたオンラインのdatファイルを読み込もうとしています。メインのWebサイトには接続できますが、そのサブディレクトリや、それらのいずれかでアクセスしようとしているテキストファイルには接続できません。ウェブサイトにアクセスできますが、サブディレクトリにはテキストファイルがありません

つまり、私はwww.mainsite.comに接続できますが、www.mainsite.com/dir1/dir2/textfile.datには接続できません。私はrecvを使ってテキストファイルを読んでみたいと思いますし、fdopenなどと違った方法でアクセスしても構いません。

これはgnu cでcygwinでWindows 7マシンに書いています。

プライバシーのため、匿名のウェブサイト名を使用します。私は下記の掲載されて使用していたコードの一部があなたを-thank:

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) 
..... 

答えて

1

Webクライアントを作るだけでconnectディレクトリにINGのより多くの、より複雑です。 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の仕組みを正確に理解することに興味がない場合は、HTTPを実装する非常に普及しているライブラリであるcURLを調べることができます。醜い詳細に陥ることなくシンプルなクライアントを作成したい(あなたのような)人々の方がはるかに簡単です。

+0

ありがとうございました。あなたはsend funtion経由でGETのようなすべてのHTTPコマンドを使用して、私の場合はrecvを使って、開こうとしていたファイルを読むことができます。 (ダンスバンナナ顔文字)! –

関連する問題