ソケットを使ってクライアントサーバプログラムを作成するための C# ライブラリ
Revisão | 07e7d34fb5987bfb1915abe7d6b2f483f932224a (tree) |
---|---|
Hora | 2015-08-15 12:09:38 |
Autor | tsntsumi <tsntsumi@tsnt...> |
Commiter | tsntsumi |
ライブラリとサンプルの使用法の説明を追加
@@ -9,4 +9,67 @@ SocketNet は、ソケットを使ってクライアントサーバプログラ | ||
9 | 9 | |
10 | 10 | このライブラリは、 GNU <a href="http://www.gnu.org/copyleft/lesser.html"> |
11 | 11 | Lesser General Public License</a> バージョン 3 の元で配布しています。 |
12 | + | |
13 | +@section sample サンプルプログラム | |
14 | + | |
15 | +SocketNet を使用したサンプルプログラムを以下のプロジェクトで提供しています。 | |
16 | + | |
17 | +- SampleChatServer -- コンソールベースの簡単なチャットサーバ。 | |
18 | +- SampleChatGtkClient -- Gtk# ベースの簡単なチャットクライアント。 | |
19 | +- SampleChatClient -- SampleChatSever と SampleChatClient の共通クラス。 | |
20 | + | |
21 | +@subsection chatserver SampleChatServer | |
22 | + | |
23 | +SampleChatServer はターミナルから起動する CLI コマンドです。 | |
24 | +起動するとチャットクライアントからの接続を、ポート番号 50001 で待ち受けます。 | |
25 | +何かキーを入力すると終了します。 | |
26 | + | |
27 | +クライアントから接続があったり、メッセージを受信したりするとコンソールに表示します。 | |
28 | + | |
29 | +メッセージが「/LIST」のときは、現在接続しているクライアントの IP アドレスを表示します。 | |
30 | + | |
31 | +@subsection chatclient SampleChatGtkClient | |
32 | + | |
33 | +SampleChatGtkClient は Gtk# ベースの GUI アプリケーションです。 | |
34 | +起動したら SampleChatServer が実行されているパソコンの IP アドレスを入力して、 | |
35 | +Connect ボタンで接続します。 | |
36 | + | |
37 | +メッセージ入力エリアに文字を入力して Send ボタンをクリックすると、 | |
38 | +サーバにその文字が送信されます。 | |
39 | +サーバから送り返されたメッセージは、メッセージ表示エリアに表示されます。 | |
40 | + | |
41 | +切断は Disconnect ボタンをクリックします。 | |
42 | + | |
43 | +@section usage 使用法 | |
44 | + | |
45 | +パケットの構造が、先頭 4 バイトにネットワークバイトオーダでペイロード長が格納されている場合は、 | |
46 | +単に SocketNet.TcpServer のインスタンスを生成して Start() メソッドを呼び出します。 | |
47 | + | |
48 | +@code | |
49 | + var server = new TcpServer(IPAddress.Any, 50001, new Packet()); | |
50 | + server.DataReceived = server_DataReceived; | |
51 | + server.Start(); | |
52 | +@endcode | |
53 | + | |
54 | +上記のようにすることで、 server_DataReceived() がパケットを受信するごとに呼び出されます。 | |
55 | +server_DataReceived() に受信したときの処理を書いてください。 | |
56 | + | |
57 | +パケットの構造が複雑な場合は、 SocketNet.Packet クラスを継承して、 | |
58 | +SocketNet.Packet.ObtainPayloadLength() をオーバライドします。 | |
59 | + | |
60 | +例えば、ヘッダが 5 バイト、フッタが 2 バイトで、ペイロードの長さがヘッダの 3 バイト目に格納されている場合は、 | |
61 | +以下のようになるでしょう。 | |
62 | + | |
63 | +@code | |
64 | + public class MyPacket: SocketNet.Packet | |
65 | + { | |
66 | + public MyPacket() : base(5, 2) {} | |
67 | + | |
68 | + public override int ObtainPayloadLength(byte[] header) | |
69 | + { | |
70 | + return header[2]; | |
71 | + } | |
72 | + } | |
73 | +@endcode | |
74 | + | |
12 | 75 | */ |