ちなみに、今のところXML-RPC,SOAP,CORBA,FTP,RCPなどを候補として考えています。
(注意:理由を明記ください。理由なしは申し訳ないですがポイントなしで)
http://www.codeguru.com/cpp/cpp/algorithms/article.php/c5099/
CodeGuru: BASE 64 Decoding and Encoding Class 2003
質問内容の情報だけだと判断しにくいですが・・・
クライアントはブラウザではなく独自のものでしょうか?
単純に転送速度と負荷に重視するならば、C言語で作り、FastCGIで常駐させ、ベタにデータ送信が一番じゃないかと思います。
いくつかプロトコルを検討されているようですが、プロトコル自体がライブラリやヘッダの処理がありオーバーヘッドになります。
ファイル名、サイズを先頭につけ、バイナリデータはBase64あたりでエンコードかバイナリのまま送信。
データを圧縮すればサーバ負荷は増えますが転送効率があがります。
もう少し関連する環境や具体的な使用方法などを書かれたほうが、よりよい回答がつくと思いますよ。
http://ja.wikipedia.org/wiki/Ftp
File Transfer Protocol - Wikipedia
何をどのように送りたいかという細かい条件にもよりますが(独自プロトコルがNGかつ単純にデータの送受信のみでしたら)FTPがベストだと思います。FTPはその名前の通りファイルを転送するために作られたプロトコルで、大量のデータ送受信に適したものですから。
テキスト系の転送の場合はバイナリ->アスキー変換(BASE64など)が入ったり、アスキー部分の解釈(XMLパーサーなど)が入るなど負荷が大きく、かつ、転送量も増大します(目安的には3倍の増大ぐらいでしょうか?)。
素のバイナリ送受信でも仮に10~1000件/secで1転送100K~10MBとすると、10~1000/sec*100K~10MB*8bit/B=80M~80Gbpsになります。ここまでの要求仕様ですとサーバーとラインを相当数用意しないと厳しいです。また(少なくともゲートとなるサーバーは)PerlやPHPなどの言語やテキスト系の転送プロトコルでは捌ききれないと思います。そのことを考えてもFTPがいいと思います。
ありがとうございます。
シンプルイズベストですかねー。
ご回答ありがとうございます。
質問にありますとおり、『クライアントが』CGI(あるいはそれに類するサーバ側駆動プロセス)です(ブラウザではありません)。
サーバはクライアントとIP上で接続できればCGIである必要はありません(FTPとか書いていますとおり、HTTPである必要はありません。)。
不特定多数のクライアントにサービスを提供するサーバプログラムを検討しているため、クライアント側の実装を円滑にするため独自手順ではなくなんらかなの規約化されたプロトコルを採用したいと考えています。
多量のデータ送受信の場合単純なデータ量の問題だけでなく、TCPコネクションのオーバーヘッドをどうさばくかなど一概にデータ量だけでは語れないポイントがでてくるとおもうのですが、それらを踏まえたうえで、おすすめいただければ幸いです。環境はUnix系サーバを想定しています。