TNB Library
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CSocketUdpEx クラス

拡張 Socket UPD 通信 [詳解]

#include <TnbSocketUdp.h>

+ CSocketUdpEx の継承関係図

クラス

struct  TDataHeader
 拡張 Socket UDP 通信データヘッダ. [詳解]
 

公開メンバ関数

TDataHeader AdjustDataHeader (const TDataHeader &h) const
 [取得] データヘッダ調整. [詳解]
 
bool Broadcast (size_t dataSize, LPCVOID lpcvData)
 [設定] ブロードバンド送信指定 [詳解]
 
 CSocketUdpEx (void)
 コンストラクタ [詳解]
 
void DisableReportViewer (void)
 [設定] レポートビュワー停止. [詳解]
 
const CSocketAddressGetAddressee (void) const
 [取得] 送信先アドレス取得. [詳解]
 
const CSocketAddressGetBaseAddress (void) const
 [取得] ベースアドレス取得. [詳解]
 
int GetIdleInterval (void) const
 [取得] アイドルイベント間隔取得 [詳解]
 
virtual DWORD GetInterfaceId (void) const
 [取得] インターフェースID取得 [詳解]
 
WORD GetMaxDatagram (void)
 [取得] UDP送信最大サイズ取得. [詳解]
 
size_t GetReceivedBufferSize (void) const
 [取得] 受信バッファサイズ取得. [詳解]
 
CThreadStatusGetReceiveThreadStatus (void)
 [参照] 受信スレッド状態参照. [詳解]
 
virtual DWORD GetReportID (void) const
 [取得] コミュニケーションID. [詳解]
 
virtual CStr GetReportName (void) const
 [取得] コミュニケーション名. [詳解]
 
SOCKET GetSocket (void) const
 [取得] ソケット取得 [詳解]
 
virtual bool IsAlive (void) const
 [確認] Aliveチェック. [詳解]
 
virtual bool IsConnect (void) const
 [確認] 接続チェック. [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) const
 [排他] ロック [詳解]
 
virtual void Purge (void)
 [設定] パージ. [詳解]
 
CThreadStatusReferThreadStatus (void)
 [参照] 受信スレッド状態参照. [詳解]
 
virtual bool Send (size_t dataSize, LPCVOID lpcvData)
 [実行] 送信 [詳解]
 
bool SetAddressee (const CSocketAddress &address)
 [設定] 送信先アドレス指定 [詳解]
 
void SetBaseAddress (const CSocketAddress &address)
 [設定] ベースアドレス設定. [詳解]
 
void SetBroadcastPort (WORD portNo, DWORD address=INADDR_BROADCAST)
 [設定] ブロードバンド送信指定 [詳解]
 
virtual void SetIdleEventMode (int iInterval=0)
 [設定] アイドルイベント設定 [詳解]
 
virtual void SetListener (IReport::IListener *piCommListener=NULL)
 [登録] 共通 Listner 登録. [詳解]
 
bool SetReceivedBufferSize (size_t size)
 [設定] 受信バッファサイズ設定. [詳解]
 
virtual void SetSocketListener (IListener *piSocketListener)
 [設定] リスナー登録 [詳解]
 
virtual bool Start (void)
 [実行] 開始 [詳解]
 
virtual void Stop (void)
 [実行] 切断 [詳解]
 
virtual void Unlock (void) const
 [排他] アンロック [詳解]
 
bool WaitConnect (DWORD dwTime) const
 [確認] 接続待ち [詳解]
 

静的公開メンバ関数

static CDwordVector GetMyAddress (void)
 [取得] 自IPアドレス取得. [詳解]
 
static void StartUp (void)
 [設定] SOCKET初期化. [詳解]
 
static bool WakeupOnLan (const BYTE *pbMacAddr)
 [送信] Wake up on LAN [詳解]
 

限定公開メンバ関数

bool m_OnEvent (const CReportEvent &ev)
 [内部] コールバック通知実行 [詳解]
 
void m_OnSend (size_t sizeData, LPCVOID lpcvData)
 [内部] 送信情報通知 [詳解]
 
void ToViewer (LPCTSTR lpszText)
 [出力] 文字列出力. [詳解]
 
void ToViewer (size_t sizeData, LPCVOID lpcvData)
 [出力] ダンプ出力. [詳解]
 

詳解

拡張 Socket UPD 通信

送受信データの先頭 6byte に TDataHeader (アドレス(IPアドレス、ポートNo))を含むようになります。
送信データ先頭の TDataHeader で、送信先を指定できます(0の場合、 SetAddressee() の指定通り)。
受信時、データ先頭に TDataHeader が格納されます。実際のデータは 6byte 目からになります。
覚え書き
アドレスは、リトルエンディアンで格納されます。

他は CSocketUdp クラスと同じです。

必要ファイル
TnbSocketUdp.h
日付
12/03/30 新規作成

TnbSocketUdp.h514 行目に定義があります。

構築子と解体子

◆ CSocketUdpEx()

CSocketUdpEx ( void  )

コンストラクタ

TnbSocketUdp.h576 行目に定義があります。

関数詳解

◆ AdjustDataHeader()

TDataHeader AdjustDataHeader ( const TDataHeader h) const

[取得] データヘッダ調整.

元データヘッダ内の IPアドレス、ポートNoが0の場合、本インスタンスで記憶している送信先の情報にしたものを返します。

引数
h元データヘッダ
戻り値
データヘッダ

TnbSocketUdp.h645 行目に定義があります。

◆ Broadcast()

bool Broadcast ( size_t  dataSize,
LPCVOID  lpcvData 
)

[設定] ブロードバンド送信指定

覚え書き
先頭6byte に TDataHeader (送信先アドレス(IPアドレス、ポートNo))を入れておく必要があります。 IPアドレスが 0.0.0.0 の場合、255.255.255.255 に置き換えます。 実際に送信されるデータは offset 6 から置くようにします。
引数
dataSizeデータサイズ
lpcvDataデータ
戻り値
true成功
false失敗

TnbSocketUdp.h590 行目に定義があります。

◆ DisableReportViewer()

void DisableReportViewer ( void  )
inherited

[設定] レポートビュワー停止.

本メソッドを使用すると、通信ログの出力を行いません。 デフォルトは、出力を行います(ただしビルドの設定にもよります)。

TnbAbstractReport.h150 行目に定義があります。

◆ GetAddressee()

const CSocketAddress & GetAddressee ( void  ) const
inherited

[取得] 送信先アドレス取得.

SetAddressee()SetBroadcastPort() で設定したアドレスが得られます。

戻り値
アドレス

TnbSocketUdp.h225 行目に定義があります。

◆ GetBaseAddress()

const CSocketAddress & GetBaseAddress ( void  ) const
inherited

[取得] ベースアドレス取得.

戻り値
受信に使用するアドレス

TnbSocketUdp.h146 行目に定義があります。

◆ GetIdleInterval()

int GetIdleInterval ( void  ) const
inherited

[取得] アイドルイベント間隔取得

戻り値
0アイドルイベント発生無し
1以上間隔(ms)

TnbAbstractReport.h107 行目に定義があります。

◆ GetInterfaceId()

virtual DWORD GetInterfaceId ( void  ) const
virtualinherited

[取得] インターフェースID取得

戻り値
ID

IReportを実装しています。

TnbAbstractReport.h78 行目に定義があります。

◆ GetMaxDatagram()

WORD GetMaxDatagram ( void  )
inherited

[取得] UDP送信最大サイズ取得.

注意
本メソッドの値に関わらず、ネットワークの MTU (Maximum Transmission Unit) を 超えるブロードキャスト データグラムの送信はお薦めできません。
戻り値
サイズ

TnbSocketUdp.h117 行目に定義があります。

◆ GetMyAddress()

static CDwordVector GetMyAddress ( void  )
staticinherited

[取得] 自IPアドレス取得.

自分のIPアドレスを取得します。2つ以上ある場合があります。

戻り値
自分のIPアドレス

TnbSocket.h520 行目に定義があります。

◆ GetReceivedBufferSize()

size_t GetReceivedBufferSize ( void  ) const
inherited

[取得] 受信バッファサイズ取得.

戻り値
0取得失敗。 Start していない、など。
1以上取得成功。値は、バッファサイズ。

TnbSocketUdp.h311 行目に定義があります。

◆ GetReceiveThreadStatus()

CThreadStatus & GetReceiveThreadStatus ( void  )
inherited

[参照] 受信スレッド状態参照.

覚え書き
旧メソッド名です。 ReferThreadStatus() を使ってください。
戻り値
スレッド状態の参照.

TnbSocketUdp.h301 行目に定義があります。

◆ GetReportID()

virtual DWORD GetReportID ( void  ) const
virtualinherited

[取得] コミュニケーションID.

TNBVIW_KIND_??? + PORT を返します。

覚え書き
開発用のメソッドです。
戻り値
ID

IReportを実装しています。

TnbSocketUdp.h96 行目に定義があります。

◆ GetReportName()

virtual CStr GetReportName ( void  ) const
virtualinherited

[取得] コミュニケーション名.

覚え書き
開発用のメソッドです。
戻り値
名前

IReportを実装しています。

TnbSocketUdp.h85 行目に定義があります。

◆ GetSocket()

SOCKET GetSocket ( void  ) const
inherited

[取得] ソケット取得

戻り値
INVALID_SOCKET接続していない
INVALID_SOCKET以外ソケット

TnbSocketUdp.h106 行目に定義があります。

◆ IsAlive()

virtual bool IsAlive ( void  ) const
virtualinherited

[確認] Aliveチェック.

Start() メソッドが実行されている状態か、チェックします。

戻り値
true開始している。
false停止している。

IReportを実装しています。

TnbSocketUdp.h204 行目に定義があります。

◆ IsConnect()

virtual bool IsConnect ( void  ) const
virtualinherited

[確認] 接続チェック.

覚え書き
本クラスの場合、Start() が成功していたら接続中扱いにしています。
戻り値
true接続中。
false切断。

IReportを実装しています。

TnbSocketUdp.h215 行目に定義があります。

◆ Lock()

virtual bool Lock ( DWORD  dwTime = INFINITE) const
virtualinherited

[排他] ロック

注意
他のクラスのLock()メソッドとは異なり、dwTimeは無視され、 INFINITEとして動作します。つまりどんな値を入れても、ロック 出来るまでリターンされません。
引数
dwTime値は無視されます。
戻り値
true 固定

ISynchronizedを実装しています。

CSyncSectionExで再実装されています。

TnbSync.h148 行目に定義があります。

◆ m_OnEvent()

bool m_OnEvent ( const CReportEvent ev)
protectedinherited

[内部] コールバック通知実行

引数
ev通知する内容
戻り値
true正常
false切断要求

TnbAbstractReport.h178 行目に定義があります。

◆ m_OnSend()

void m_OnSend ( size_t  sizeData,
LPCVOID  lpcvData 
)
protectedinherited

[内部] 送信情報通知

覚え書き
処理は開発用TRACEのみ
引数
sizeData送信するデータ長。
lpcvData送信するデータ。

TnbAbstractReport.h163 行目に定義があります。

◆ Purge()

virtual void Purge ( void  )
virtualinherited

[設定] パージ.

通信のゴミを浄化

覚え書き
本クラスでは何もしません。

IReportを実装しています。

CBufferingReporter, CCommunicationReporterで再実装されています。

TnbAbstractReport.h117 行目に定義があります。

◆ ReferThreadStatus()

CThreadStatus & ReferThreadStatus ( void  )
inherited

[参照] 受信スレッド状態参照.

戻り値
スレッド状態の参照.

TnbSocketUdp.h291 行目に定義があります。

◆ Send()

virtual bool Send ( size_t  dataSize,
LPCVOID  lpcvData 
)
virtual

[実行] 送信

覚え書き
先頭6byte に TDataHeader (送信先アドレス(IPアドレス、ポートNo))を入れておく必要があります。 実際に送信されるデータは offset 6 から置くようにします。
引数
dataSizeデータサイズ
lpcvDataデータ
戻り値
true成功
false失敗

CSocketUdpを再実装しています。

TnbSocketUdp.h621 行目に定義があります。

◆ SetAddressee()

bool SetAddressee ( const CSocketAddress address)
inherited

[設定] 送信先アドレス指定

覚え書き
Start() の後、 Send() 前に本メソッドで送信先を設定する必要があります。
引数
address相手のIPアドレス&ポートNo
戻り値
true成功。
false失敗(名前が解決できない)

TnbSocketUdp.h237 行目に定義があります。

◆ SetBaseAddress()

void SetBaseAddress ( const CSocketAddress address)
inherited

[設定] ベースアドレス設定.

受信に使用する IP アドレス(INADDR_ANY でも可)、ポートNo を指定します。 ポートNo は UDP ヘッダの送信元ポートNoにも使われます。

注意
Start() 前に使用してください。
覚え書き
ポートNo に0を指定すると送信専用になります(受信 Event は発生しません)。
引数
addressアドレス

TnbSocketUdp.h135 行目に定義があります。

◆ SetBroadcastPort()

void SetBroadcastPort ( WORD  portNo,
DWORD  address = INADDR_BROADCAST 
)
inherited

[設定] ブロードバンド送信指定

覚え書き
Start() の後、 Send() 前に本メソッドで送信先を設定する必要があります。
引数
portNo送信先ポートNo
addressアドレス。省略すると INADDR_BROADCAST

TnbSocketUdp.h250 行目に定義があります。

◆ SetIdleEventMode()

virtual void SetIdleEventMode ( int  iInterval = 0)
virtualinherited

[設定] アイドルイベント設定

覚え書き
受信がない時、指定の間隔でコールバックを発生させることができます。 開始後、あるいは受信処理後、指定ms秒後にコールバックが始まります。 Open中に有無の切り替えは可能です。
引数
iIntervalIdleイベントをあげる間隔を指定します。0なら、Idleイベントなし。

IReportを実装しています。

CBufferingReporter, CCommunicationReporterで再実装されています。

TnbAbstractReport.h90 行目に定義があります。

◆ SetListener()

virtual void SetListener ( IReport::IListener piCommListener = NULL)
virtualinherited

[登録] 共通 Listner 登録.

覚え書き
登録できる IReport::IListener は一つだけです。
引数
piCommListenerリスナー。省略すると解除になります。

IReportを実装しています。

CBufferingReporterで再実装されています。

TnbAbstractReport.h69 行目に定義があります。

◆ SetReceivedBufferSize()

bool SetReceivedBufferSize ( size_t  size)
inherited

[設定] 受信バッファサイズ設定.

引数
size受信バッファサイズ
戻り値
true成功。
false失敗。 Start していない、など。

TnbSocketUdp.h325 行目に定義があります。

◆ SetSocketListener()

virtual void SetSocketListener ( IListener piSocketListener)
virtualinherited

[設定] リスナー登録

覚え書き
リスナーを登録しないと受信情報が受けられません
登録できる CAbstractSocket::IListener は一つだけです。
引数
piSocketListenerリスナー

TnbSocket.h466 行目に定義があります。

◆ Start()

virtual bool Start ( void  )
virtualinherited

[実行] 開始

覚え書き
SetBaseAddress() で設定後、本メソッドを使用します。
戻り値
true成功。送受信可能。
false失敗。

IReportを実装しています。

TnbSocketUdp.h157 行目に定義があります。

◆ StartUp()

static void StartUp ( void  )
staticinherited

[設定] SOCKET初期化.

WSAStartup() コールします。すでにコールしている場合は、何もしません。

覚え書き
通常、ソケット使用時に自動的に使用されますので、コールする必要は有りません。 TNB Library 以外のソケット関係を先に使用する場合、WSAStartup() の代わりに 使用してください。

TnbSocket.h478 行目に定義があります。

◆ Stop()

virtual void Stop ( void  )
virtualinherited

[実行] 切断

IReportを実装しています。

TnbSocketUdp.h275 行目に定義があります。

◆ ToViewer() [1/2]

void ToViewer ( LPCTSTR  lpszText)
protectedinherited

[出力] 文字列出力.

引数
lpszText文字列.

TnbAbstractReport.h219 行目に定義があります。

◆ ToViewer() [2/2]

void ToViewer ( size_t  sizeData,
LPCVOID  lpcvData 
)
protectedinherited

[出力] ダンプ出力.

引数
sizeDataデータサイズ.
lpcvDataデータ

TnbAbstractReport.h210 行目に定義があります。

◆ Unlock()

virtual void Unlock ( void  ) const
virtualinherited

[排他] アンロック

ISynchronizedを実装しています。

TnbSync.h155 行目に定義があります。

◆ WaitConnect()

bool WaitConnect ( DWORD  dwTime) const
inherited

[確認] 接続待ち

引数
dwTime待ち時間(ms)
戻り値
true接続
falseタイムアウト

TnbAbstractReport.h127 行目に定義があります。

◆ WakeupOnLan()

static bool WakeupOnLan ( const BYTE *  pbMacAddr)
staticinherited

[送信] Wake up on LAN

引数
pbMacAddr6BYTEのMACアドレス。
戻り値
true成功。
false失敗。

TnbSocketUdp.h345 行目に定義があります。