getsockopt 関数 (winsock.h)
getsockopt 関数は、ソケット オプションを取得します。
構文
int getsockopt(
[in] SOCKET s,
[in] int level,
[in] int optname,
[out] char *optval,
[in, out] int *optlen
);
パラメーター
[in] s
ソケットを識別する記述子。
[in] level
オプションが定義されているレベル。 例: SOL_SOCKET。
[in] optname
値を取得するソケット オプション。 例: SO_ACCEPTCONN。 optname 値は、指定されたレベル内で定義されたソケット オプションである必要があります。または動作が未定義です。
[out] optval
要求されたオプションの値が返されるバッファーへのポインター。
[in, out] optlen
optval バッファーのサイズ (バイト単位) へのポインター。
戻り値
エラーが発生しない場合、 getsockopt は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。
エラー コード | 意味 |
---|---|
この関数を使用する前に、 WSAStartup 呼び出しが正常に行われる必要があります。 | |
メモ ネットワーク サブシステムが失敗しました。
|
|
optval パラメーターまたは optlen パラメーターの 1 つがユーザー アドレス空間の有効な部分ではないか、optlen パラメーターが小さすぎます。 | |
ブロックしている Windows Sockets 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。 | |
level パラメーターが不明または無効です。 | |
オプションが不明であるか、指定されたプロトコル ファミリでサポートされていません。 | |
記述子はソケットではありません。 |
注釈
getsockopt 関数は、任意の型のソケットに関連付けられているソケット オプションの現在の値を任意の状態で取得し、結果を optval に格納します。 オプションは複数のプロトコル レベルで存在できますが、常に最上位のソケット レベルに存在します。 オプションは、パケット ルーティングや OOB データ転送などのソケット操作に影響します。
選択したオプションに関連付けられている値は、バッファー optval で返されます。 optlen が指す整数には、最初にこのバッファーのサイズが含まれている必要があります。が返されると、返される値のサイズに設定されます。 SO_LINGERの場合、これは 、LINGER 構造体のサイズになります。 その他のほとんどのオプションでは、整数のサイズになります。
アプリケーションは、指定したパラメーターによって直接または間接的に指されるメモリ領域を割り当てる必要があります。
オプションが setsockopt で設定されなかった場合、 getsockopt は オプションの既定値を返します。
getsockopt では、次のオプションがサポートされています。 Type 列は、 optval でアドレス指定されたデータの種類を識別します。
ソケット オプションの詳細については、「ソケット オプション」を参照してください。
次の optname パラメーターの値の表は、level パラメーターが SOL_SOCKET に設定されている場合に有効です。
値 | Type | 説明 |
---|---|---|
SO_ACCEPTCONN | BOOL | ソケットはリッスンしています。 |
SO_BROADCAST | BOOL | ソケットは、ブロードキャスト メッセージの送信と受信用に構成されます。 |
SO_BSP_STATE | CSADDR_INFO | ソケットによって使用されるローカル アドレス、ローカル ポート、リモート アドレス、リモート ポート、ソケットの種類、プロトコルを返します。 |
SO_CONDITIONAL_ACCEPT | BOOL | setsockopt の以前の呼び出しまたはシステムの既定値から、現在のソケット状態を返します。 |
SO_CONNECT_TIME | DWORD | ソケットが接続された秒数を返します。 このソケット オプションは、接続指向プロトコルでのみ有効です。 |
SO_DEBUG | BOOL | デバッグが有効になっています。 |
SO_DONTLINGER | BOOL | TRUE の場合、SO_LINGER オプションは無効になります。 |
SO_DONTROUTE | BOOL | ルーティングが無効になっています。 この設定は成功しますが、AF_INETソケットでは無視されます。は、 WSAENOPROTOOPT を使用AF_INET6ソケットで失敗します。 このオプションは ATM ソケットではサポートされていません。 |
SO_ERROR | INT | エラーの状態を取得し、クリアします。 |
SO_EXCLUSIVEADDRUSE | BOOL | 他のソケットが同じアドレスとポートにバインドされないようにします。 このオプションは、 バインド 関数を呼び出す前に設定する必要があります。 |
SO_GROUP_ID | GROUP | 予約済み。 |
SO_GROUP_PRIORITY | INT | 予約済み。 |
SO_KEEPALIVE | BOOL | キープアライブが送信されています。 ATM ソケットではサポートされていません。 |
SO_LINGER | LINGER 構造体 | 現在の残留オプションを返します。 |
SO_MAX_MSG_SIZE | unsigned int | メッセージ指向ソケット型のメッセージの最大サイズ (たとえば、SOCK_DGRAM)。 ストリーム指向ソケットには意味がありません。 |
SO_OOBINLINE | BOOL | OOB データは、通常のデータ ストリームで受信されています。 (このトピックの説明については、「 Windows ソケット 1.1 ブロッキング ルーチンと EINPROGRESS 」セクションを参照してください)。 |
SO_PORT_SCALABILITY | BOOL | ローカル コンピューター上の異なるローカル アドレス ポート ペアに対してワイルドカード ポートを複数回割り当てることで、ポート割り当てを最大化することで、ソケットのローカル ポートのスケーラビリティを有効にします。 |
SO_PROTOCOL_INFO | WSAPROTOCOL_INFO | このソケットにバインドされているプロトコルのプロトコル情報の説明。 |
SO_RCVBUF | INT | 受信用に予約されたソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 受信ウィンドウのサイズに必ずしも対応するとは限りません。 |
SO_REUSEADDR | BOOL | ソケットは、既に使用されているアドレスにバインドできます。 ATM ソケットには適用されません。 |
SO_SNDBUF | INT | 送信用に予約されたソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 送信ウィンドウのサイズに必ずしも対応するとは限りません。 |
SO_TYPE | INT | ソケットの型 (たとえば、SOCK_STREAM)。 |
PVD_CONFIG | サービス プロバイダー依存 | ソケット に関連付けられているサービス プロバイダーからの不透明なデータ構造オブジェクト。 このオブジェクトは、サービス プロバイダーの現在の構成情報を格納します。 このデータ構造の正確な形式は、サービス プロバイダー固有です。 |
レベル = IPPROTO_TCP
「 IPPROTO_TCPソケット オプションのTCP_NODELAY」を参照してください。 レベル = IPPROTO_TCPのソケット オプションの詳細と詳細については、このトピックも参照してください。
次の optname パラメーターの値の表は、level パラメーターが NSPROTO_IPX に設定されている場合に有効です。
- IPX_PTYPE
- IPX_FILTERPTYPE
- IPX_DSTYPE
- IPX_RECVHDR
- IPX_MAXSIZE
- IPX_ADDRESS
値 | Type | 説明 |
---|---|---|
IPX_PTYPE | INT | IPX パケットの種類を取得します。 |
IPX_FILTERPTYPE | INT | 受信フィルター パケットの種類を取得します |
IPX_DSTYPE | INT | 送信されるすべてのパケットの SPX ヘッダーのデータ ストリーム フィールドの値を取得します。 |
IPX_EXTENDED_ADDRESS | BOOL | 拡張アドレス指定が有効になっているかどうかを確認します。 |
IPX_RECVHDR | BOOL | プロトコル ヘッダーがすべての受信ヘッダーで送信されるかどうかを確認します。 |
IPX_MAXSIZE | INT | 送信できる最大データ サイズを取得します。 |
IPX_ADDRESS | IPX_ADDRESS_DATA 構造体 | IPX がバインドされている特定のアダプターに関する情報を取得します。 アダプターの番号付けは 0 から始まります。 adapternum メンバーは、返却時に入力されます。 |
IPX_GETNETINFO | IPX_NETNUM_DATA 構造 | 特定の IPX ネットワーク番号に関する情報を取得します。 キャッシュで使用できない場合は、RIP を使用して情報を取得します。 |
IPX_GETNETINFO_NORIP | IPX_NETNUM_DATA 構造 | 特定の IPX ネットワーク番号に関する情報を取得します。 キャッシュで使用できない場合、 は RIP を使用して情報を取得せず、エラーを返します。 |
IPX_SPXGETCONNECTIONSTATUS | IPX_SPXCONNSTATUS_DATA 構造体 | 接続された SPX ソケットに関する情報を取得します。 |
IPX_ADDRESS_NOTIFY | IPX_ADDRESS_DATA 構造体 | IPX がバインドされているアダプターで変更が発生した場合の状態通知を取得します。 |
IPX_MAX_ADAPTER_NUM | INT | 存在するアダプターの最大数を取得し、基本ゼロとして番号を付けます。 |
IPX_RERIPNETNUMBER | IPX_NETNUM_DATA 構造 | IPX_GETNETINFOと同様ですが、ネットワーク情報がローカル キャッシュ内にある場合でも、IPX は解決のために RIP を使用するように強制します。 |
IPX_IMMEDIATESPXACK | BOOL | ACK を送信する前に SPX 接続を遅延しないように指示します。 やり取りトラフィックのないアプリケーションでは、パフォーマンスを向上させるには、これを TRUE に設定する必要があります。 |
TCP_MAXSEG | INT | TCP 最大セグメント サイズを受信します。 Windows 10 以降のバージョンでサポートされています。 |
次の表に、getsockopt 関数でサポートされていない BSD ソケット オプションを表す optname の値を示します。
値 | Type | 説明 |
---|---|---|
SO_RCVLOWAT | INT | 低基準値を受け取ります。 |
SO_RCVTIMEO | INT | タイムアウトを受信します。 |
SO_SNDLOWAT | INT | 低基準値を送信します。 |
SO_SNDTIMEO | INT | タイムアウトを送信します。 |
TCP_MAXSEG | INT | TCP の最大セグメント サイズを受信します。 Windows 10より前のバージョンではサポートされていません。 |
サポートされていないオプションを指定して getsockopt を呼び出すと、WSAGetLastError から WSAENOPROTOOPT のエラー コードが返されます。
getsockopt 関数でサポートされている optname パラメーターのソケット オプションの詳細を以下に示します。
- SO_CONNECT_TIME
-
このオプションは、ソケットが接続された秒数を返します。 このオプションは、接続指向プロトコルでのみ有効です。
SO_CONNECT_TIME オプションを getsockopt 関数と共に使用して、接続が確立されているかどうかをチェックできます。 このオプションは、 ConnectEx 関数呼び出しの進行中にも使用できます。 接続が確立されている場合、SO_CONNECT_TIME オプションは、接続が確立された期間を決定できます。 ソケットが接続されていない場合、 getsockopt はSOCKET_ERRORを返します。 データを送信せずに、しばらくの間確立された接続があるかどうかを確認するには、次のような接続を確認する必要があります。 アプリケーションでこれらの接続を終了することをお勧めします。
- SO_DEBUG
-
メモ Windows ソケット サービス プロバイダーは、SO_DEBUG オプションがアプリケーションによって設定されている場合、出力デバッグ情報を提供することをお勧めします (ただし、必須ではありません)。 デバッグ情報と、それが使用する形式を生成するためのメカニズムは、このドキュメントの範囲外です。
- SO_ERROR
- SO_ERROR オプションはソケットベースのエラー コードを返してリセットします。これは、 WSAGetLastError 関数呼び出しと WSASetLastError 関数呼び出しを使用して処理されるスレッドごとのエラー コードとは異なります。 ソケットを使用した正常な呼び出しでは、SO_ERROR オプションによって返されるソケット ベースのエラー コードはリセットされません。
- SO_EXCLUSIVEADDRUSE
- 他のソケットが同じアドレスとポートにバインドされないようにします。 バインド関数を呼び出す前に、このオプションを設定する必要があります。 詳細については、 SO_EXCLUSIVEADDRUSE リファレンスを参照してください。
- SO_GROUP_ID
-
メモ このオプションは予約されています。 このオプションは、 getsockopt に対しても排他的です。値は NULL である必要があります。
- SO_GROUP_PRIORITY
-
このオプションは予約されています。 グループの優先度は、ソケット グループ内の他のソケットに対する指定されたソケットの優先順位を示します。 値は負でない整数であり、優先度が最も高い値に対応する 0 です。 優先度の値は、リソースが不足する可能性があるリソースを割り当てる方法に関する、基になるサービス プロバイダーへのヒントを表します。 たとえば、2 つ以上のソケットが両方ともデータを送信する準備ができたら常に、最も優先度の高いソケット (SO_GROUP_PRIORITYの最小値) を最初に処理し、残りは相対的な優先順位に従って順番に処理する必要があります。
WSAENOPROTOOPT エラー・コードは、非グループ・ソケットの場合、またはグループ・ソケットをサポートしていないサービス・プロバイダーの場合に示されます。
- SO_KEEPALIVE
- アプリケーションは、tcp/IP サービス プロバイダーが SO_KEEPALIVE ソケット オプションをオンにすることで、TCP 接続でのキープアライブ パケットの使用を有効にすることを要求できます。 このオプションは、ソケットのキープアライブ オプションの現在の値を照会します。 Windows ソケット プロバイダーは、キープアライブの使用をサポートする必要はありません。有効な場合、正確なセマンティクスは実装固有ですが、IETF Web サイトで利用可能な RFC 1122 で指定されているインターネット ホストの要件に関するセクション 4.2.3.6 に準拠する必要があります。 キープアライブの結果として接続が切断された場合、エラー コード WSAENETRESET はソケットで進行中の呼び出しに返され、それ以降の呼び出しは WSAENOTCONN で失敗します。 SO_KEEPALIVE は ATM ソケットではサポートされていません。また、ATM ソケットでキープアライブ パケットを使用できるように要求すると、ソケットからエラーが返されます。
- SO_LINGER
- SO_LINGERは、未格納データがソケットでキューに入れられて closesocket が実行されたときに実行されるアクションを制御します。 SO_LINGER設定が closesocket のセマンティクスに影響する方法については、「 closesocket」を参照してください。 アプリケーションは、(optval パラメーターによって指される) LENGTH 構造体を取得することによって、現在の動作を取得します。
- SO_MAX_MSG_SIZE
- これは、特定のサービス プロバイダーによって実装されるメッセージ指向ソケット型 (たとえば、SOCK_DGRAM) のメッセージの最大送信 (送信) サイズを示す、取得専用ソケット オプションです。 バイト ストリーム指向ソケットには意味がありません。 受信メッセージの最大サイズを確認するためのプロビジョニングはありません。
- SO_PROTOCOL_INFO
- これは、このソケットに関連付けられている WSAPROTOCOL_INFO 構造体を提供する取得専用オプションです。 この構造体の詳細については、「 WSAEnumProtocols 」を参照してください。
- SO_SNDBUF
- Windows ソケットの実装でSO_RCVBUFオプションとSO_SNDBUFオプションがサポートされている場合、アプリケーションは異なるバッファー サイズ (大きいまたは小さい) を要求できます。 setsockopt の呼び出しは、実装で要求された金額全体が提供されなかった場合でも成功する可能性があります。 アプリケーションは、実際に指定されたバッファー サイズをチェックするために、同じオプションを使用してこの関数を呼び出す必要があります。
- SO_REUSEADDR
- 既定では、ソケットは既に使用されているローカル アドレスにバインドできません ( bind を参照)。 ただし、場合によっては、この方法でアドレスを再利用する必要があります。 すべての接続はローカル アドレスとリモート アドレスの組み合わせによって一意に識別されるため、リモート アドレスが異なる限り、同じローカル アドレスに 2 つのソケットをバインドしても問題はありません。 目的のアドレスが既に別のソケットで使用されているため、ソケット上のバインドを許可しないように Windows ソケット プロバイダーに通知するには、バインドを発行する前に、アプリケーションでソケットの SO_REUSEADDR ソケット オプションを設定する必要があります。 オプションは バインド時にのみ解釈されることに注意してください。したがって、既存のアドレスにバインドされていないソケットでオプションを設定する必要はありません (ただし無害です)。 バインド 後にオプションを設定またはリセットしても、このソケットやその他のソケットには影響しません。 SO_REUSEADDRは ATM ソケットには適用されず、再利用とアドレス指定の要求ではエラーは発生しませんが、ATM ソケットが使用中の場合には影響しません。
- PVD_CONFIG
- このオプションは、ソケット s に関連付けられているサービス プロバイダーから不透明なデータ構造オブジェクトを取得します。 このオブジェクトは、サービス プロバイダーの現在の構成情報を格納します。 このデータ構造の正確な形式は、サービス プロバイダー固有です。
- TCP_NODELAY
- TCP_NODELAY オプションは、TCP/IP サービス プロバイダーに固有です。 TCP_NODELAY オプションが有効になっている場合 (およびその逆) 場合、Nagle アルゴリズムは無効になります。 Nagle アルゴリズム (RFC 896 で説明) は、ホストから送信される小さなパケットの数を減らすのに非常に効果的です。 このプロセスでは、未確認のデータが既にフライト中の場合は送信データをバッファリングするか、フルサイズのパケットを送信できるようになるまで送信データをバッファリングします。 Windows ソケットの実装では、アプリケーション プロトコルの大部分で Nagle アルゴリズムが大幅なパフォーマンス向上を実現できるため、既定で Nagle アルゴリズムを有効にすることを強くお勧めします。 ただし、一部のアプリケーションでは、このアルゴリズムによってパフォーマンスが低下する可能性があり、同じオプションを使用して setsockopt を使用して無効にすることができます。 これらは、多数の小さなメッセージが送信され、メッセージ間の遅延が維持されるアプリケーションです。
コード例
次のコード サンプルは、 getsockopt 関数の使用方法を示しています。#include <stdio.h>
#include "winsock2.h"
#include <windows.h>
void main() {
//---------------------------------------
// Declare variables
WSADATA wsaData;
SOCKET ListenSocket;
sockaddr_in service;
//---------------------------------------
// Initialize Winsock
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if( iResult != NO_ERROR )
printf("Error at WSAStartup\n");
//---------------------------------------
// Create a listening socket
ListenSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket()\n");
WSACleanup();
return;
}
//---------------------------------------
// Bind the socket to the local IP address
// and port 27015
hostent* thisHost;
char* ip;
u_short port;
port = 27015;
thisHost = gethostbyname("");
ip = inet_ntoa (*(struct in_addr *)*thisHost->h_addr_list);
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr(ip);
service.sin_port = htons(port);
if ( bind( ListenSocket,(SOCKADDR*) &service, sizeof(service) ) == SOCKET_ERROR ) {
printf("bind failed\n");
closesocket(ListenSocket);
return;
}
//---------------------------------------
// Initialize variables and call getsockopt.
// The SO_ACCEPTCONN parameter is a socket option
// that tells the function to check whether the
// socket has been put in listening mode or not.
// The various socket options return different
// information about the socket. This call should
// return 0 to the optVal parameter, since the socket
// is not in listening mode.
int optVal;
int optLen = sizeof(int);
if (getsockopt(ListenSocket,
SOL_SOCKET,
SO_ACCEPTCONN,
(char*)&optVal,
&optLen) != SOCKET_ERROR)
printf("SockOpt Value: %ld\n", optVal);
//---------------------------------------
// Put the listening socket in listening mode.
if (listen( ListenSocket, 100 ) == SOCKET_ERROR) {
printf("error listening\n");
}
//---------------------------------------
// Call getsockopt again to verify that
// the socket is in listening mode.
if (getsockopt(ListenSocket,
SOL_SOCKET,
SO_ACCEPTCONN,
(char*)&optVal,
&optLen) != SOCKET_ERROR)
printf("SockOpt Value: %ld\n", optVal);
WSACleanup();
return;
}
IrDA ソケットに関する注意事項
- Af_irda.h ヘッダー ファイルは明示的に含まれている必要があります。
- Windows は WSAENETDOWN を返し、基になるトランシーバー ドライバーが IrDA プロトコル スタックを使用して初期化に失敗したことを示します。
- IrDA では、いくつかの特別なソケット オプションがサポートされています。
値 Type 説明 IRLMP_ENUMDEVICES *DEVICELIST 範囲内のデバイスについて説明します。 IRLMP_IAS_QUERY *IAS_QUERY IAS 属性を取得します。
IrDA ソケット接続を開始する前に、使用可能なすべての IrDA デバイスの一覧を返す getsockopt(,,IRLMP_ENUMDEVICES,,,) 関数呼び出しを実行して、デバイス アドレスを取得する必要があります。 関数呼び出しから返されたデバイス アドレスは 、SOCKADDR_IRDA 構造体にコピーされ、その後の connect 関数呼び出しの呼び出しによって使用されます。
検出は、次の 2 つの方法で実行できます。
-
まず、IRLMP_ENUMDEVICES オプションを指定して getsockopt 関数呼び出しを実行すると、アイドル状態の各アダプターで 1 つの検出が実行されます。 検出されたデバイスとキャッシュされたデバイス (アクティブなアダプター上) の一覧がすぐに返されます。
次のコードは、この方法を示しています。
#include <winsock2.h> #include <ws2tcpip.h> #include <af_irda.h> #include <stdio.h> #include <windows.h> // link with Ws2_32.lib int __cdecl main() { //----------------------------------------- // Declare and initialize variables WSADATA wsaData; int iResult; int i; DWORD dwError; SOCKET Sock = INVALID_SOCKET; #define DEVICE_LIST_LEN 10 SOCKADDR_IRDA DestSockAddr = { AF_IRDA, 0, 0, 0, 0, "SampleIrDAService" }; unsigned char DevListBuff[sizeof (DEVICELIST) - sizeof (IRDA_DEVICE_INFO) + (sizeof (IRDA_DEVICE_INFO) * DEVICE_LIST_LEN)]; int DevListLen = sizeof (DevListBuff); PDEVICELIST pDevList; pDevList = (PDEVICELIST) & DevListBuff; // Initialize Winsock iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { printf("WSAStartup failed: %d\n", iResult); return 1; } Sock = socket(AF_IRDA, SOCK_STREAM, 0); if (Sock == INVALID_SOCKET) { dwError = WSAGetLastError(); printf ("socket failed trying to create an AF_IRDA socket with error %d\n", dwError); if (dwError == WSAEAFNOSUPPORT) { printf("Check that the local computer has an infrared device\n"); printf ("and a device driver is installed for the infrared device\n"); } WSACleanup(); return 1; } // Sock is not in connected state iResult = getsockopt(Sock, SOL_IRLMP, IRLMP_ENUMDEVICES, (char *) pDevList, &DevListLen); if (iResult == SOCKET_ERROR) { printf("getsockopt failed with error %d\n", WSAGetLastError()); WSACleanup(); return 1; } if (pDevList->numDevice == 0) { // no devices discovered or cached // not a bad idea to run a couple of times printf("No IRDA devices were discovered or cached\n"); } else { // one per discovered device for (i = 0; i < (int) pDevList->numDevice; i++) { // typedef struct _IRDA_DEVICE_INFO // { // u_char irdaDeviceID[4]; // char irdaDeviceName[22]; // u_char irdaDeviceHints1; // u_char irdaDeviceHints2; // u_char irdaCharSet; // } _IRDA_DEVICE_INFO; // pDevList->Device[i]. see _IRDA_DEVICE_INFO for fields // display the device names and let the user select one } } // assume the user selected the first device [0] memcpy(&DestSockAddr.irdaDeviceID[0], &pDevList->Device[0].irdaDeviceID[0], 4); iResult = connect(Sock, (const struct sockaddr *) &DestSockAddr, sizeof (SOCKADDR_IRDA)); if (iResult == SOCKET_ERROR) { printf("connect failed with error %d\n", WSAGetLastError()); } else printf("connect to first IRDA device was successful\n"); WSACleanup(); return 0; }
- IrDA デバイス アドレスの検出を実行する 2 番目の方法は、遅延検出を実行することです。この方法では、スタックによって最後に実行された検出から検出されたデバイスの一覧が変更されるまで、アプリケーションには通知されません。
前の表の Type 列に示されている IAS_QUERY 構造は、ピア デバイスの IAS データベースから 1 つのクラスの 1 つの属性を取得するために使用されます。 アプリケーションは、クエリを実行するデバイスとクラス、および属性と属性の種類を指定します。 デバイスは、 以前に getsockopt(IRLMP_ENUMDEVICES) の呼び出しによって取得されていることに注意してください。 アプリケーションは、返されるパラメーターに必要なサイズのバッファーを割り当てる必要があります。
多くのレベルのソケット オプションは、IrDA にとって意味がありません。SO_LINGERとSO_DONTLINGERのみがサポートされます。
Windows Phone 8: この関数は、Windows Phone 8 以降の Windows Phone ストア アプリでサポートされています。
Windows 8.1とWindows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winsock.h (Winsock2.h を含む) |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |