ソケットの基本クラス
[詳細]
#include <SGSocket.h>
すべてのメンバ一覧
Public メソッド |
| SGSocket (SGFdDataList *list) |
| コンストラクタ
|
| SGSocket (int size, SGStream *srteam, SGFdDataList *list) |
| コンストラクタ
|
virtual | ~SGSocket () |
| デストラクタ
|
int | GetAddrInfo (int flags, int family, int type, const char *addr, int port, struct addrinfo **ai) |
| アドレス情報取得
|
void | FreeAddrInfo (struct addrinfo *ai) |
int | Socket (int family, int type, int protocol) |
| ソケット作成
|
int | Bind (const struct sockaddr *addr, socklen_t addrlen) |
| ソケットとアドレスを関連付け
|
int | Connect (const struct sockaddr *addr, socklen_t addrlen) |
| 接続
|
int | Close () |
| 切断
|
int | Listen (int backlog=SOMAXCONN) |
| 待ち受け開始
|
int | Accept () |
| コネクションの取り出し
|
int | SendTo (const void *data, int len, const struct sockaddr *addr, socklen_t addrlen) |
| 送信
|
virtual int | Send (const void *data, int length) |
| 送信
|
virtual void | OnOpen () |
| オープン後コールバック
|
virtual void | OnClose () |
| クローズ後コールバック
|
virtual void | OnListen () |
| 待ち受け開始後コールバック
|
virtual void | OnConnect () |
| コネクト後コールバック
|
virtual void | OnAccept (int sd, struct sockaddr *addr, socklen_t *addrlen) |
| コネクションの取り出し後コールバック
|
virtual int | OnReceive (struct sockaddr *addr, socklen_t addrlen) |
virtual void | OnTimeout (TimeVal time) |
| タイムアウト時コールバック
|
virtual void | ReadyToRead () |
| データ受信
|
SGLog & | Log () |
説明
ソケットの基本クラス
コンストラクタとデストラクタ
コンストラクタ
- 引数:
-
| size | ログサイズ |
| stream | ログ出力ストリーム |
| list | ファイルディスクリプタ情報リスト |
関数
int GetAddrInfo |
( |
int |
flags, |
|
|
int |
family, |
|
|
int |
type, |
|
|
const char * |
addr, |
|
|
int |
port, |
|
|
struct addrinfo ** |
ai | |
|
) |
| | |
アドレス情報取得
- 引数:
-
| flags |
- AI_PASSIVE この関数で得られるaiをbind関数で使う予定がある場合に必要です。
接続志向プロトコルの為の準備、つまりconnect、sendto、コネクションレス・プロトコルのsendには必要ありません。
- AI_ADDRCONFIG
|
| family | アドレスファミリー。AF_INET を指定します。 |
| type | ソケット種別
- SOCK_STREAM TCP
- SOCK_DGRAM UDP
|
| addr | アドレス |
| port | ポート番号 |
| ai | アドレス情報構造体 |
- 戻り値:
- getaddrinfo 関数の戻り値を返します。
void FreeAddrInfo |
( |
struct addrinfo * |
ai |
) |
|
int Socket |
( |
int |
family, |
|
|
int |
type, |
|
|
int |
protocol | |
|
) |
| | |
ソケット作成
- 引数:
-
| family |
- SOCK_STREAM TCP
- SOCK_DGRAM UDP
|
| type | |
| protocol | |
- 戻り値:
- 成功時はソケットディスクリプタ番号を返します。エラー時は -1 を返します。
int Bind |
( |
const struct sockaddr * |
addr, |
|
|
socklen_t |
addrlen | |
|
) |
| | |
ソケットとアドレスを関連付け
- 引数:
-
| addr | アドレス |
| addrlen | addr の長さ |
- 戻り値:
- bind 関数の戻り値を返す。
int Connect |
( |
const struct sockaddr * |
addr, |
|
|
socklen_t |
addrlen | |
|
) |
| | |
接続
- 引数:
-
| addr | アドレス |
| addrlen | addr の長さ |
- 戻り値:
- connect 関数の戻り値を返す。
int Listen |
( |
int |
backlog = SOMAXCONN |
) |
|
コネクションの取り出し
- 戻り値:
- ソケットディスクリプタ番号を返す。
int SendTo |
( |
const void * |
data, |
|
|
int |
length, |
|
|
const struct sockaddr * |
addr, |
|
|
socklen_t |
addrlen | |
|
) |
| | |
送信
- 引数:
-
| data | データ |
| length | データの長さ |
| addr | アドレス |
| addrlen | addr の長さ |
- 戻り値:
- sendto 関数の戻り値を返す。
int Send |
( |
const void * |
data, |
|
|
int |
length | |
|
) |
| | [virtual] |
送信
- 引数:
-
- 戻り値:
- send 関数の戻り値を返す。
void OnOpen |
( |
|
) |
[virtual] |
void OnClose |
( |
|
) |
[virtual] |
void OnListen |
( |
|
) |
[virtual] |
void OnConnect |
( |
|
) |
[virtual] |
void OnAccept |
( |
int |
sd, |
|
|
struct sockaddr * |
addr, |
|
|
socklen_t * |
addrlen | |
|
) |
| | [virtual] |
int OnReceive |
( |
struct sockaddr * |
addr, |
|
|
socklen_t |
addrlen | |
|
) |
| | [virtual] |
受信時コールバック
ソケットにデータが到着するとReadyToRead()が呼ばれ、その中でデータが受信されます。 受信されたデータが内部バッファに格納され、OnReceive()が呼ばれます。 内部バッファのデータは次の関数でサイズの取得、データの取得ができます。 int GetDataLength(); int GetData(void* data,int len); 内部バッファにデータが残っている状態でこの関数を終了すると、次のいづれかの条件で 再度、OnReceive()が呼ばれます。 1.10ms程度の時間経過 2.新規データ到着 いづれの場合も、一度この関数を抜けると、再度この関数が呼ばれるまでに、他のソケットや ファイルなどの受信処理、タイマー発生に伴う処理などが行われる可能性があります。 より高速(高優先)にこの処理を終わらせたい場合は、全てのデータを処理してから 関数を抜けるようにして下さい。
- 引数:
-
| addr | アドレス |
| addrlen | addr の長さ |
- 戻り値:
- 常に 0 を返す。
PGClientSocketで再定義されています。
void OnTimeout |
( |
TimeVal |
time |
) |
[virtual] |
タイムアウト時コールバック
タイムアウト発生後に呼ばれます。
void ReadyToRead |
( |
|
) |
[virtual] |
データ受信
基本クラスのReadyToReadは使わない
SGFdDataを再定義しています。
このクラスの説明は次のファイルから生成されました: