SocketNet
1.0
A Socket Networking (C/S) Library
|
SocketNet は、ソケットを使ってクライアントサーバプログラムを作成するための C# フレームワークです。 主に、サーバを作るための SocketNet.TcpServer クラスと、 クライアントで使用する SocketNet.TcpConnection クラスで構成されます。
このライブラリは、 GNU Lesser General Public License バージョン 3 の元で配布しています。
SocketNet を使用したサンプルプログラムを以下のプロジェクトで提供しています。
SampleChatServer はターミナルから起動する CLI コマンドです。 起動するとチャットクライアントからの接続を、ポート番号 50001 で待ち受けます。 何かキーを入力すると終了します。
クライアントから接続があったり、メッセージを受信したりするとコンソールに表示します。
メッセージが「/LIST」のときは、現在接続しているクライアントの IP アドレスを表示します。
SampleChatGtkClient は Gtk# ベースの GUI アプリケーションです。 起動したら SampleChatServer が実行されているパソコンの IP アドレスを入力して、 Connect ボタンで接続します。
メッセージ入力エリアに文字を入力して Send ボタンをクリックすると、 サーバにその文字が送信されます。 サーバから送り返されたメッセージは、メッセージ表示エリアに表示されます。
切断は Disconnect ボタンをクリックします。
パケットの構造が、先頭 4 バイトにネットワークバイトオーダでペイロード長が格納されている場合は、 単に SocketNet.TcpServer のインスタンスを生成して Start() メソッドを呼び出します。
上記のようにすることで、 server_DataReceived() がパケットを受信するごとに呼び出されます。 server_DataReceived() に受信したときの処理を書いてください。
パケットの構造が複雑な場合は、 SocketNet.Packet クラスを継承して、 SocketNet.Packet.ObtainPayloadLength() をオーバライドします。
例えば、ヘッダが 5 バイト、フッタが 2 バイトで、ペイロードの長さがヘッダの 3 バイト目に格納されている場合は、 以下のようになるでしょう。