電子書籍の厳選無料作品が豊富!

C/C++によるファイル送受信プログラムの書き方を教えて下さい.

私のやりたい事は,クライアントがファイルを,サーバにアップロードすることをC/C++で実現することです.

-----
OS:CentOS 6.5
コンパイラ:GCC 6.1
開発言語:C++
プロトコル:TCP, IP

役割:
 クライアント(CentOS):ファイルをサーバへ送信.
  (送信元ファイル:/home/client/upload/hogehoge.txt)
 サーバ(CentOS):クライアントから送られてきたファイルを受信.
  (受信ディレクトリ:/home/server/download/)
-----

A 回答 (5件)

・サーバ


socket()で待ち受けソケット作る
bind()で待ち受けソケットをバインドしたうえでlisten()
accept()で待ち受け
接続して来たらまずopen()で保存先ファイルを開く
データが終わるまでループ、read()で接続ソケットから読んでwrite()でファイルに書き込む
接続ソケットとファイルをclose()
待ち受けに戻る
※複数同時進行できるようにするならfork()とかpthread_create()とかで並列実行

・クライアント
open()でファイルを開く
socket()でソケット作る
connect()でサーバにつなぐ
ファイルの最後までループ、read()でファイルから読んでwrite()でソケットに書き込む
ソケットとファイルをclose()
おしまい

通信プログラムを書こうという人なら、省略した細かいところは普通に書けるでしょう。
プロトコル的にファイル名をクライアントからサーバに通知するなら、最初にその通信ですね。
    • good
    • 0

全くの手作りでファイル転送やりたいって話なのかな?



boostとかいろんなライブラリにそのてのネットワークライブラリ
があるし、できあいのFTPサーバ+手作りFTPクライアント
という手もあります。
    • good
    • 0

C言語になりますが以下の書籍を参考してはいかがでしょうか?


TCP/IPソケットプログラミング C言語編 価格1944円
amazonの以下のサイトで販売しています。
https://www.amazon.co.jp/TCP-IP%E3%82%BD%E3%82%B …

中古品でもよければ更に安い価格で入手可能です。
私もこの本を持っていますが、やりたいことが簡潔に書かれていますので非常に参考になりました。
    • good
    • 0

質問が抽象的すぎるんじゃないですかね?



とりあえずTCP通信に関しては「Linux TCP socket通信 プログラム サンプル」で検索すれば
それなりにいろいろと見つかると思います。
まぁ、注意点としては…それで作ったプログラム(サーバプログラム)を実行している側で、ちゃんとポート開けないとダメだよ?とか。

極論かましていいんならsystem()でscpでもコールする。
とかも有りですが。
    • good
    • 0

・ローカル側


1. ファイルからデータを読み込む
2. そのデータをリモートに送る
・リモート側
1. データをローカルから受け取る
2. そのデータをファイルに書き込む

リモート側で書き込むファイルの名前をどうするかは知らん. そして, 「データのやり取り」つまり上の「ローカル側」の 2 と「リモート側」の 1 は前の質問 ( https://oshiete.goo.ne.jp/qa/9409345.html ) で「見つかった」とかいう「C言語によるネットワークプログラミングの書籍・Webサイト」に書いてあるはず. 一方その他の部分はネットワークに関係ないし「ネットワークを介してデータを送る」などという頭痛の痛い面倒なことを始めるよりも前に理解できているはず.

さて, いったい何がわからないというんだい?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!