SocketNet  1.0
A Socket Networking (C/S) Library
SocketNet.TcpConnection クラス

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

SocketNet.TcpConnection の継承関係図
Inheritance graph
SocketNet.TcpConnection 連携図
Collaboration graph

公開メンバ関数

 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< TcpConnectionEventArgsDisconnected
 接続が切断された時に発行されます。 [詳解]
 
EventHandler< TcpDataReceivedEventArgsDataReceived
 データが受信された時に発行されます。 [詳解]
 

非公開型

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バイトがネットワークバイトオーダーのペイロード長としてパケットを受信します。

ヘッダ
pl1pl2pl3pl4

列挙型メンバ詳解

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

列挙値
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
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
int SocketNet.TcpConnection.packetPayloadLength
private
byte [] SocketNet.TcpConnection.partiallyReceivedData
private
readonly int SocketNet.TcpConnection.ReceivedDataBufferSize = 65535
staticprivate
DataReceiveState SocketNet.TcpConnection.receiveState
private
object SocketNet.TcpConnection.syncObject
private

プロパティ詳解

Socket SocketNet.TcpConnection.Client
getprivate set
BinaryReader SocketNet.TcpConnection.Reader
getprivate set
BinaryWriter SocketNet.TcpConnection.Writer
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().


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