SocketNet 1.0 A Socket Networking (C/S) Library

- 総合概要
- パッケージ
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | プロパティ | イベント | 非公開型 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
SocketNet.TcpConnection クラス

単一の TCP/IP 接続を表現します。 [詳解]

SocketNet.TcpConnection の継承関係図
SocketNet.TcpConnection 連携図

## 公開メンバ関数
| 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

## 列挙型メンバ詳解

enum SocketNet.TcpConnection.DataReceiveState
| private

データを受信する間に接続が取りうる状態です。

列挙値
PacketHeader | ヘッダの受信中。
PacketPayload | ペイロードの受信中。
PacketFooter | パケットのフッタ。

## 構築子と解体子

SocketNet.TcpConnection.TcpConnection | ( | Socket | client,
|  | Packet | packet
| ) |  |

コンストラクタ。

引数

  client | ソケット。
  packet | 受信するパケットの各部の長さの設定を格納するオブジェクト。

参照先 SocketNet.TcpConnection.Client, SocketNet.TcpConnection.packet, SocketNet.TcpConnection.Reader, SocketNet.TcpConnection.ReceivedDataBufferSize, SocketNet.TcpConnection.Writer.

## メソッド詳解

void SocketNet.TcpConnection.BeginReceive | ( |  | ) |
| 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().

呼び出し関係図:

被呼び出し関係図:

void SocketNet.TcpConnection.DataReceivedCallback | ( | IAsyncResult | asyncResult | ) |
| 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().

被呼び出し関係図:

void SocketNet.TcpConnection.Dispose | ( | bool | disposing | ) |
| private

関連付けられたリソースを解放します。

参照先 SocketNet.TcpConnection.Close().

呼び出し関係図:

void SocketNet.TcpConnection.OnDataReceived | ( | TcpDataReceivedEventArgs | e | ) |
| private

DataReceived イベントを発行します。

引数

  e | イベントのデータを格納する TcpDataReceivedEventArgs オブジェクト。

参照先 SocketNet.TcpConnection.DataReceived.

参照元 SocketNet.TcpConnection.DataReceivedCallback().

被呼び出し関係図:

void SocketNet.TcpConnection.OnDisconnected | ( | TcpConnectionEventArgs | e | ) |
| 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().

呼び出し関係図:

被呼び出し関係図:

## メンバ詳解

int SocketNet.TcpConnection.bytesToProcessRemaining
| private

List<byte> SocketNet.TcpConnection.completelyReceivedData
| private

AsyncCallback SocketNet.TcpConnection.dataReceivedCallback
| private

bool SocketNet.TcpConnection.disposed = false
| private

byte [] SocketNet.TcpConnection.header
| private

volatile bool SocketNet.TcpConnection.isClosed
| private

NetworkStream SocketNet.TcpConnection.networkStream
| private

readonly Packet SocketNet.TcpConnection.Packet = new Packet()
| private

byte [] SocketNet.TcpConnection.packet
| private

参照元 SocketNet.TcpConnection.TcpConnection().

int SocketNet.TcpConnection.packetPayloadLength
| private

参照元 SocketNet.TcpConnection.DataReceivedCallback().

byte [] SocketNet.TcpConnection.partiallyReceivedData
| private

readonly int SocketNet.TcpConnection.ReceivedDataBufferSize = 65535
| static private

参照元 SocketNet.TcpConnection.TcpConnection().

DataReceiveState SocketNet.TcpConnection.receiveState
| private

object SocketNet.TcpConnection.syncObject
| private

## プロパティ詳解

Socket SocketNet.TcpConnection.Client
| get private set

ソケットを取得します。

このプロパティは、基本的に手動でデータを操作するのに使用します。

参照元 SocketNet.TcpConnection.BeginReceive(), SocketNet.TcpConnection.Close(), SocketNet.TcpConnection.DataReceivedCallback(), SampleChatServer.MainClass.OnConnected(), SampleChatServer.MainClass.OnDisconnected(), SocketNet.TcpConnection.TcpConnection().

BinaryReader SocketNet.TcpConnection.Reader
| get private set

リーダを取得します。

参照元 SocketNet.TcpConnection.Close(), SocketNet.TcpConnection.TcpConnection().

BinaryWriter SocketNet.TcpConnection.Writer
| get private set

ライタを取得します。

参照元 SocketNet.TcpConnection.Close(), SampleChatServer.MainClass.OnChatMessageReceived(), SampleChatClient.ChatClient.Send(), SocketNet.TcpConnection.TcpConnection().

## イベント詳解

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().

このクラス詳解は次のファイルから抽出されました:

- TcpConnection.cs