C(TCP)のファイル転送アプリケーション
TCPソケットを使用してCを使用して構築された単純なファイル転送アプリケーション。このアプリケーションには、着信クライアント接続に対応し、ファイルを提供するサーバーと、サーバーからファイルを要求してローカルに保存するクライアントが含まれます。
要件
このアプリケーションを実行するには、次のことが必要です。
- MINGWまたはGCCコンパイラ(WindowsでCコードをコンパイルする)。
- Visual Studioコード(コードの編集と管理のためのオプション)。
- git (オプション、このリポジトリとバージョンの制御をクローニングするため)。
ダウンロード
mingwをダウンロード:
- MingwのSourceForgeページに移動します。
- MINGWをインストールし、
gccがインストールに含まれていることを確認してください。 - Mingwの
binフォルダー(例、 C:MinGWbin )をパス環境変数に追加します。
Visual Studioコードをインストールする(オプション):
- Visual Studio CodeのWebサイトからダウンロードしてインストールします。
- VSコードでプロジェクトフォルダーを開くと、ファイルを簡単に管理およびコンパイルできます。
GTK 3 (グラフィカルユーザーインターフェイス用)。
GCCのインストールを確認します
GCCが正しくインストールされていることを確認するには、端末またはコマンドプロンプトを開いて入力してください。
GCCが適切にインストールされている場合は、バージョン情報を表示する必要があります。
ダウンロード
- mingwをダウンロード:
- MingwのSourceForgeページに移動します。
- MINGWをインストールし、GCCがインストールに含まれていることを確認してください。
- MingwのBinフォルダー(例、C: Mingw bin)をパス環境変数に追加します。
- GTK 3をインストールする:
- GTKの公式WebサイトからWindowsのGTK 3をダウンロードしてください。
- GTKをインストールし、必要なDLLがシステムのパスまたはコンパイルされた実行可能ファイルと並んで配置されていることを確認します。または、MSYS2を使用している場合:
- msys2端子を開き、実行します。
pacman -S mingw-w64-x86_64-gtk3
はじめる
- このリポジトリをクローンします
- お好みのIDEまたはテキストエディターでプロジェクトを開きます
- Visual Studio Code、Code :: Blocks、Dev-C ++、Clion、またはCプログラミングをサポートするその他のIDEテキストエディターを使用できます。
- 選択したエディタでプロジェクトフォルダーを開き、ファイルを簡単に管理および編集します。
コンパイル - GTKなし
次のようにサーバーとクライアントのアプリケーションをコンパイルします。
- サーバーをコンパイルします
gcc server.c -o server.exe -lws2_32
- クライアントをコンパイルします
gcc client.c -o client.exe -lws2_32
これにより、server.exeおよびclient.exeが生成されます。
アプリケーションの実行-GTKなし
ステップ1:サーバーを起動します
- プロジェクトディレクトリで端末またはコマンドプロンプトを開きます。
- サーバーアプリケーションの実行:
ステップ2:クライアントを実行します
- 別のターミナルまたは別のマシンで、プロジェクトディレクトリに移動します。
- クライアントを実行し、サーバーのIPアドレスとダウンロードするファイル名を指定します。
./client.exe < server_ip > < filename >
- <server_ip>をサーバーのIPアドレスに置き換えます(局所的に実行されている場合は127.0.0.1など)。
- サーバーのディレクトリからダウンロードするファイルの名前に置き換えます。
./client.exe 127.0.0.1 testfile.txt
クライアントは、サーバーに接続し、指定されたファイルを要求し、同じファイル名でローカルに保存します。
サーバーとクライアントをコンパイル - GTKで
- GTKを見つけるようにPKG-CONFIGをセットアップしてください:
- MSYS2またはVCPKGのような別のパッケージマネージャーを使用している場合は、PKG-Configパスが適切に構成されていることを確認してください。 MSYS2では、次のコマンドを実行できます。
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Visual Studio CodeのC_CPP_Properties.jsonを更新:Visual Studio CodeがGTKやその他のライブラリを認識することを確認するには、c_cpp_properties.jsonファイルを更新して、GTKおよびその他の必要なライブラリへのパスを含めます。例:例:
- Ctrl + Shift + Pを押して、C/C ++を検索します。構成(UI)を編集します。
- インクルードパスセクションで、次のようなパスを追加します。
" C:/msys64/mingw64/include/gtk-3.0 " ,
" C:/msys64/mingw64/include/glib-2.0 " ,
" C:/msys64/mingw64/lib/glib-2.0/include " ,
" C:/msys64/mingw64/include/pango-1.0 " ,
" C:/msys64/mingw64/include/cairo " ,
" C:/msys64/mingw64/include/gdk-pixbuf-2.0 " ,
" C:/msys64/mingw64/include/atk-1.0 " ,
" C:/msys64/mingw64/include/harfbuzz "
- サーバーとクライアントをコンパイルします。
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
これにより、プロジェクトフォルダーでserver_app.exeおよびclient_app.exeが生成されます。
アプリケーションの実行-GTKで
ステップ1:サーバーを起動します
- プロジェクトディレクトリで端末またはコマンドプロンプトを開きます。
- サーバーアプリケーションの実行:
ステップ2:クライアントを実行します
- 別のターミナルまたは別のマシンで、プロジェクトディレクトリに移動します。
- クライアントを実行し、サーバーのIPアドレスとダウンロードするファイル名を指定します。
トラブルシューティング
- 接続が拒否された(10061) :指定されたIPとポートでサーバーが実行され、リスニングされていることを確認します。
- 無効なIPおよびポート:クライアントとサーバーの両方が正しいIPとポートを使用していることを確認します。
- ファイアウォールまたはアンチウイルス:接続をブロックすると、ファイアウォールまたはアニティウイルスソフトウェアを一時的に無効にします。
メモ
- サーバーとクライアントが同じネットワーク上にあることを確認するか、通信を可能にするためにルーターとファイアウォール設定を調整します。
- このアプリケーションは、基本的なファイル転送用に設計されており、現在シングルクライアント接続をサポートしています。
将来の強化 - トラッカー
- 複数のファイル転送:
- 複数のファイルの一度またはバッチ内の転送をサポートします。これには、ファイル名の配列を送信してから、各ファイルを次々に転送する場合があります。
- ディレクトリ転送:
- メタデータとともに、すべてのファイルとフォルダーを再帰的に送信することを含む可能性のあるディレクトリ全体を転送することを許可します。
- 圧縮:
- 転送時間を短縮するには、送信する前にファイルを圧縮して受信側で圧縮することができます。
- 暗号化:
- 安全なファイル転送に暗号化(SSL/TLSなど)を実装します。特に、機密データを送信する予定の場合。
- ユーザーインターフェイス✔
- GTKを使用したアプリケーションの場合
- GTKのないアプリケーションの場合
- エラー処理およびその他の問題: ✔
- ファイルの上書き、特別なファイルタイプ、ファイルの整合性チェック。 ✔
貢献したい場合は、チャットGPTを使用していても、私の時間を無駄にしているので、最初に何をしているのかを知ってください(バグのないコードを維持してレビューすることで)(GPTにコードを書いてPRを取得しないように依頼することで)。要求者がAIを使用しており、問題についてさえ考えていない場合、それは非常に明白です。
ライセンス
このプロジェクトはオープンソースであり、MITライセンスの下で利用可能です。