#include <dwc.h>
BOOL DWC_SendReliable(u8 aid,
const void *buffer,
int size);| aid | 送信先のAID |
| buffer | 送信バッファのポインタ |
| size | 送信バッファのサイズ |
| TRUE | 送信バッファにデータセット完了。 |
| FALSE | 送信バッファにデータセット失敗。 エラー発生中か、前の送信処理が終わっていない、無効なAIDを指定した、もしくは送信バッファに空きが全くない。 |
マッチメイク完了後、aidで指定された相手にReliable送信を行います。
Reliable送信はUDPを使用しますが、送信した順番通りにパケットの重複や欠落などがなく相手にデータが届くようにライブラリのレベルで実装されています。その代わりにパケットの到着を送信ごとに確認することになるため、このような確認を行なわないUnreliable送信に比べて時間がかかることに留意してください。
本関数によるデータ送信は、以下のように一時保留されることがあるため、この間に送信データ(buffer)の内容を変更しないでください。送信データの内容を変更しても良いかどうかは、DWC_IsSendableReliable関数によってReliable送信が可能な状態であることを確認するか、後述の送信完了コールバックによって送信の完了を確認することで判断できます。
本関数で送信するデータは、送信先での到着が確認されるまでDWC_InitFriendsMatch関数でサイズを指定した送信バッファにデータが溜まっていきます。このバッファに十分な空きがなかった場合、バッファに入らなかったデータは一時保留され、DWC_ProcessFriendsMatch関数内からバッファに空きができ次第、順次送信されます。なお、このバッファに「全く」空きがない場合、本関数はFALSEを返します。
ひとつのパケットで送信できる最大のサイズ(デフォルトはDWC_TRANSPORT_SEND_RELIABLE_MAX(1465Byte))が決まっているため、このサイズより大きいデータを送信しようとするとデータは内部で分割されます。分割されて残ったデータは一時保留され、DWC_ProcessFriendsMatch関数内で順次送信されます。
なお、この最大データサイズはDWC_SetSendSplitMax関数で変更することができますが、様々な設定の通信機器に対応するためには、デフォルトのサイズより大きい値には設定しないでください。
また、DWC_SetUserSendCallback関数で送信完了コールバックを設定していた場合はデータ送信が完了した時点でコールバックが呼び出されます。ただし、ここでいう送信の完了とは、送信バッファにデータが格納されたことを意味し、相手側にデータが到着したということではありません。
Reliable送信は直接接続しているホストにのみ行えます。そのため、スター型のときはサーバホストにのみReliable送信ができます。ハイブリッド型のときはDWC_GetDirectConnectedAIDBitmap関数で取得できたAIDにのみ可能です。フルメッシュ型のときは接続している全てのホストにReliable送信が可能です。
DWC_GetDirectConnectedAIDBitmap
DWC_SendReliableBitmap
5.1pr2より前の変更履歴はこちら