|
SocketNet
1.0
A Socket Networking (C/S) Library
|
単一の TCP/IP 接続を表現します。 [詳解]


公開メンバ関数 | |
| TcpConnection (Socket client, Packet packet) | |
| コンストラクタ。 [詳解] | |
| void | Dispose () |
| 関連付けられたリソースを解放します。 [詳解] | |
| void | Close () |
| 現在の接続と関連付けられたヘルパーオブジェクトをクローズします。 [詳解] | |
| void | ReceiveDataAsync () |
| パケットを受信するための非同期システムを開始します。 [詳解] | |
プロパティ | |
| Socket | Client [get, private set] |
| ソケットを取得します。 [詳解] | |
| BinaryReader | Reader [get, private set] |
| リーダを取得します。 [詳解] | |
| BinaryWriter | Writer [get, private set] |
| ライタを取得します。 [詳解] | |
イベント | |
| EventHandler< TcpConnectionEventArgs > | Disconnected |
| 接続が切断された時に発行されます。 [詳解] | |
| EventHandler< TcpDataReceivedEventArgs > | DataReceived |
| データが受信された時に発行されます。 [詳解] | |
非公開型 | |
| enum | DataReceiveState { DataReceiveState.PacketHeader = 0, DataReceiveState.PacketPayload, DataReceiveState.PacketFooter } |
| データを受信する間に接続が取りうる状態です。 [詳解] | |
非公開メンバ関数 | |
| void | Dispose (bool disposing) |
| 関連付けられたリソースを解放します。 [詳解] | |
| void | BeginReceive () |
| バッファをクリアして、Socket.BeginReceive() を実行します。 [詳解] | |
| void | DataReceivedCallback (IAsyncResult asyncResult) |
| Socket.BeginRceive() のコールバック。 [詳解] | |
| void | OnDataReceived (TcpDataReceivedEventArgs e) |
| DataReceived イベントを発行します。 [詳解] | |
| void | OnDisconnected (TcpConnectionEventArgs e) |
| 切断イベントを発行します。 [詳解] | |
非公開変数類 | |
| readonly Packet | Packet = new Packet() |
| object | syncObject |
| NetworkStream | networkStream |
| volatile bool | isClosed |
| DataReceiveState | receiveState |
| AsyncCallback | dataReceivedCallback |
| byte[] | partiallyReceivedData |
| List< byte > | completelyReceivedData |
| byte[] | header |
| byte[] | packet |
| int | packetPayloadLength |
| int | bytesToProcessRemaining |
| bool | disposed = false |
静的非公開変数類 | |
| static readonly int | ReceivedDataBufferSize = 65535 |
単一の TCP/IP 接続を表現します。
この接続は、TCP/IPでパケットを非同期的に受信します。 接続が切断されると Disconnected イベントが発行されます。 パケットを完全に受信すると DataReceived イベントが発行されます。
パケットは、ヘッダとペイロードとフッタの3つのパートから構成されていることを前提としています。 ただし、フッタ長は0バイトでも構いません。
| ヘッダ | ペイロード | フッタ |
ヘッダにはペイロード長が格納されているものとして、 Packet.ObtainPayloadLength メソッドを使って取り出します。 デフォルトでは、ヘッダ4バイト、フッタ0バイトで、 ヘッダの4バイトがネットワークバイトオーダーのペイロード長としてパケットを受信します。
| ヘッダ | |||
| pl1 | pl2 | pl3 | pl4 |
|
private |
| SocketNet.TcpConnection.TcpConnection | ( | Socket | client, |
| Packet | packet | ||
| ) |
コンストラクタ。
| client | ソケット。 |
| packet | 受信するパケットの各部の長さの設定を格納するオブジェクト。 |
参照先 SocketNet.TcpConnection.Client, SocketNet.TcpConnection.packet, SocketNet.TcpConnection.Reader, SocketNet.TcpConnection.ReceivedDataBufferSize, SocketNet.TcpConnection.Writer.
|
private |
バッファをクリアして、Socket.BeginReceive() を実行します。
参照先 SocketNet.TcpConnection.Client.
参照元 SocketNet.TcpConnection.DataReceivedCallback(), SocketNet.TcpConnection.ReceiveDataAsync().

| void SocketNet.TcpConnection.Close | ( | ) |
現在の接続と関連付けられたヘルパーオブジェクトをクローズします。
参照先 SocketNet.TcpConnection.Client, SocketNet.TcpConnection.OnDisconnected(), SocketNet.TcpConnection.Reader, SocketNet.TcpConnection.Writer.
参照元 SocketNet.TcpConnection.DataReceivedCallback(), SocketNet.TcpConnection.Dispose().


|
private |
Socket.BeginRceive() のコールバック。
| asyncResult |
参照先 SocketNet.TcpConnection.BeginReceive(), SocketNet.TcpConnection.Client, SocketNet.TcpConnection.Close(), SocketNet.TcpConnection.OnDataReceived(), SocketNet.TcpConnection.packetPayloadLength.
参照元 SocketNet.TcpConnection.ReceiveDataAsync().


| void SocketNet.TcpConnection.Dispose | ( | ) |
関連付けられたリソースを解放します。
参照元 SampleChatClient.ChatClient.Close(), SocketNet.TcpServer.CloseConnection(), SocketNet.TcpServer.Dispose().

|
private |
|
private |
DataReceived イベントを発行します。
| e | イベントのデータを格納する TcpDataReceivedEventArgs オブジェクト。 |
参照先 SocketNet.TcpConnection.DataReceived.
参照元 SocketNet.TcpConnection.DataReceivedCallback().

|
private |
切断イベントを発行します。
| e | イベントのデータを格納する TcpConnectionEventArgs オブジェクト。 |
参照先 SocketNet.TcpConnection.Disconnected.
参照元 SocketNet.TcpConnection.Close().

| void SocketNet.TcpConnection.ReceiveDataAsync | ( | ) |
パケットを受信するための非同期システムを開始します。
参照先 SocketNet.TcpConnection.BeginReceive(), SocketNet.TcpConnection.DataReceivedCallback().
参照元 SampleChatClient.ChatClient.BeginReceiveMessage(), SocketNet.TcpServer.Start().


|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
private |
|
private |
|
getprivate set |
ソケットを取得します。
このプロパティは、基本的に手動でデータを操作するのに使用します。
参照元 SocketNet.TcpConnection.BeginReceive(), SocketNet.TcpConnection.Close(), SocketNet.TcpConnection.DataReceivedCallback(), SampleChatServer.MainClass.OnConnected(), SampleChatServer.MainClass.OnDisconnected(), SocketNet.TcpConnection.TcpConnection().
|
getprivate set |
リーダを取得します。
参照元 SocketNet.TcpConnection.Close(), SocketNet.TcpConnection.TcpConnection().
|
getprivate set |
| EventHandler<TcpDataReceivedEventArgs> SocketNet.TcpConnection.DataReceived |
データが受信された時に発行されます。
参照元 SampleChatClient.ChatClient.Connect(), SocketNet.TcpConnection.OnDataReceived(), SocketNet.TcpServer.Start().
| EventHandler<TcpConnectionEventArgs> SocketNet.TcpConnection.Disconnected |
接続が切断された時に発行されます。
参照元 SocketNet.TcpConnection.OnDisconnected(), SocketNet.TcpServer.Start().