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