質問: どうか、postでのファイル転送の仕方を教えてください。 どうか、postでのファイル転送の仕方を教えてください。 borland c++でhttp通信プログラムを書いています。 postを使ってhttp通信でファイルをサーバーに転送したいのですが、良く分かりません。 取り合えず、現状としてはwinsockを利用してファイルを転送しようとしました。 (ソース) socket s; [ソケット生成完了] sprintf(send_buf, "post %s /http1.0\r\n\rhost: %s:%d\r\n", path, host, port); send(s, send_buf, strlen(send_buf), 0); sprinf(send_buf, "\r\n"); send(s, send_buf, strlen(send_buf), 0); ここまでは来たのですが、ここからwhileのfgetsでファイルをバッファにいれてソケットで送信したら、ただのソケット通信になってしまのでここからが分かりません。 この方法であっているのかも、よく分かりません。 http通信でファイルを転送するには、どうすればよいのでしょうか? どなたか、お教え願えませんか?
回答: httpのプロトコルはやったことがないので、postとかの送り方は知りませんが...... 通信プロトコルにはレイヤーという概念があります。最下層の物理的な信号の伝送方式から、上位はhttpプロトコルによる情報のやり取りまで何階層にも分かれています。 httpの下位にはtcp/ipというプロトコル層があり、これがインターネットの通信の基礎となってる部分です。そして、tcp/ipの通信を実現するための仕組みがソケット通信です。(厳密にはtcpソケット通信) つまり、http通信はソケット通信の上に乗っかっているので、http通信を行うということはソケット通信の上でhttpのプロトコルに乗っ取ったパケットデータのやり取りをするということにほかなりません。 ま、最近のjavaとか.netとかの開発環境なら最初からhttp通信の仕組みが用意されているので、ソケットレベルまで意識してプログラミングする必要は無いのですが、純粋なc++の開発環境だとそういうわけにはいきませんね。(c++だってネットを探せば誰かが作ったそれ用のライブラリがあるとは思いますが)