CAsyncSocket::SendTo
特定の目的にデータを送信するには、このメンバー関数を呼び出します。
int SendTo(
const void* lpBuf,
int nBufLen,
UINT nHostPort,
LPCTSTR lpszHostAddress = NULL,
int nFlags = 0
);
int SendTo(
const void* lpBuf,
int nBufLen,
const SOCKADDR* lpSockAddr,
int nSockAddrLen,
int nFlags = 0
);
パラメーター
lpBuf
送信されるデータを格納するバッファー。nBufLen
バイト lpBuf のデータの長さ。nHostPort
ソケットのアプリケーションを指定するポート。lpszHostAddress
このオブジェクトを接続するソケットのネットワーク アドレス: 「128.56.22.8」「など ftp.microsoft.com、または」は点線の数など、コンピューターの名前。nFlags
呼び出しが行われる方法を指定します。この関数のセマンティクスは、ソケットの nFlags のオプションおよびパラメーターによって決まります。後者は、C++ OR 演算子では、次の値を組み合わせることによって構成されます:MSG_DONTROUTE は、データがの適用を受けなかったルーティングをしないことを指定します。Windows ソケットの業者は、このフラグを無視するように選択できます。
MSG_OOB の送信の帯域外 (データSOCK_STREAM のみ)。
lpSockAddr
ターゲットのソケットのアドレスを含む SOCKADDR の構造体へのポインター。nSockAddrLen
バイト lpSockAddr のアドレスの長さ。
戻り値
エラーが発生しなかった場合は、SendTo が送信される文字数を返します。これがであること ( nBufLenでという名前の数よりも注意してください)。それ以外 SOCKET_ERROR の戻り値は、特定のエラー コードは GetLastErrorを呼び出して取得できます。このエラーは、次のメンバー関数に適用されます:
WSANOTINITIALISED は正常に AfxSocketInit は、この API を使用する前に行う必要があります。
WSAENETDOWN は、Windows ソケット実装ネットワークのサブシステムが失敗したことを検出しました。
WSAEACCES は要求されたアドレス ブロードキャスト アドレスですが、適切なフラグが設定された。
WSAEINPROGRESS A のブロックの Windows ソケット処理は進行中です。
WSAEFAULT は lpBuf またはパラメーター lpSockAddr のユーザーのアドレス空間の一部でない場合、または lpSockAddr の引数が小さすぎます ( SOCKADDR の構造体のサイズより小さい)。
WSAEINVAL ホスト名は無効です。
WSAENETRESET は Windows ソケット接続の実装が削除されるため、リセットする必要があります。
Windows ソケットの実装WSAENOBUFS レポート バッファーのデッドロック。
WSAENOTCONN は、ソケット接続されていません (SOCK_STREAM のみ)。
WSAENOTSOCK は記述子ソケットではありません。
WSAEOPNOTSUPP MSG_OOB が指定されましたが、ソケットは型 SOCK_STREAMではありません。
WSAESHUTDOWN は、ソケット シャットダウン; ShutDown が 1 または 2.に nHow 設定すると、開始後にソケット SendTo を呼び出すことはできません。
WSAEWOULDBLOCK はブロッキング ソケットとしてマークされ、要求された操作はブロックされます。
WSAEMSGSIZE は、型 SOCK_DGRAMソケットであり、データグラムは、Windows ソケットの実装でサポートされる最大サイズよりも大きいです。
WSAECONNABORTED は、仮想行タイムアウト中止またはそのほかのエラーが原因です。
WSAECONNRESET は、リモート側によって仮想行リセットされています。
WSAEADDRNOTAVAIL は、指定したアドレス ローカル コンピューターでは使用できません。
指定したファミリのWSAEAFNOSUPPORT の アドレスは、このソケットに使用することはできません。
WSAEDESTADDRREQ A の目的のアドレスは必須です。
WSAENETUNREACH は、現時点におけるこのネットワーク ホストから到達できません。
解説
データグラムまたはストリーム ソケットでSendTo は、ソケットの出力データを作成するために使用します。データグラム ソケットに AfxSocketInitによって格納される WSADATA の構造体の iMaxUdpDg の要素で指定された基になるサブネット IP パケットの最大サイズを超えていない場合、問題は注意が必要です。データを基になるプロトコルをアトミックに渡すには長すぎてエラー WSAEMSGSIZE はを返し、データは送信されません。
データが正常に提供されたことを SendTo の正常な完了には示されていないことに注意してください。
SOCK_DGRAM ソケットでのみSendTo が lpSockAddr のパラメーターで識別される特定のソケットにデータグラムを送信するために使用されます。
ブロードキャストを送信するには SOCK_DGRAM (のみ)、lpSockAddr のパラメーターのアドレスは特別な IP アドレス INADDR_BROADCAST を使用する必要があります (目的のポート番号とともに Windows ソケットのヘッダー ファイル WINSOCK.H) で定義された構築。または、lpszHostAddress のパラメーターが null場合、ソケットはブロードキャスト用に構成されます。また、データグラムは、通常、データグラムのデータの一部がヘッダー (を除く) 512 バイトを超えるしないことを意味する断片化が発生する可能性があるサイズを超えると、非推奨です。
IPv6 のアドレスを処理するには、CAsyncSocket::SendToExを使用します。
必要条件
Header: afxsock.h