• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ネットワーク初心者です。)

ネットワーク初心者のためのborland C++でのhttpファイル送信の方法

このQ&Aのポイント
  • ネットワーク初心者の方がborland C++を使用してWindowsクライアントからサーバーにファイルをHTTP通信で送信する方法について教えてください。
  • サーバーへのCGIプログラムの呼び出しは成功していますが、HTTPでファイルを送信するためにはどのような手順が必要ですか?
  • ご教授いただける方がいらっしゃいましたら、お力をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

詳しいところはRFCでも当たっていただくとして…… >sprintf(send_buf, "POST %s http/1.0\r\n\r", path); >send(s, send_buf, strlen(send_buf),0); >sprintf(send_buf, "Host: %s:%d\r\n", host, port); >send(s, send_buf, strlen(send_buf), 0); POSTの後の改行は空行を挟まないので、"POST %s http/1.0\r\n"ではないですか? # もっとも、掲示された例では"\n"が1つ足りませんから空行を挟んでいることになるかは微妙ですが。 send_bufに十分なバッファサイズがあれば… sprintf(send_buf, "POST %s http/1.0\r\nHost: %s:%d\r\n", path, host, port); と、続けて書いても問題ありません。 # HTTPのPOSTリクエストで…Content-Lengthヘッダも必要になるかとは思いますが。

yxia001
質問者

補足

Content-Lengthヘッダってファイルのバイトサイズをサーバーにsendで送ればいいってことですか?

その他の回答 (1)

回答No.2

1.送信するファイルをエンコード 2.POSTないしはゲットの引数に付ける 3.send って感じ。

yxia001
質問者

補足

ファイルのエンコードってどういうことですか? 僕は、単純にファイルをfgetsで1行づつ、送信バッファにいれ、それをソケットで送信するという形に、したんですがこれって単なるsocket通信ですよね?ここら辺が、httpでよく分からないんです。 ソース: 上記のPOST、HOSTのあと while((fgets(buf, sizeof(buf), fp)) != NULL){ sprintf(send_buf, "%s", buf); ok = send(s, send_buf, strlen(send_buf), 0); if(ok == SOCKET_ERROR){ printf("ファイル内容を送信できません。\n"); exit(1); }else if(ok == -1){ perror("send"); break; } } でシャットダウンで送信終了という手順では、httpではないんですよね?

関連するQ&A