Winsock2@関数リファレンス

WinsockIndexへ戻る。

プチリファレンス

使いそうな関数のリファレンス
英語リファレンスをそれっぽく訳してみました。間違ってたらごめにょ
かなり雑です。参考程度にお願いします。

関数名 内容
WSAStartup Winsockの初期化を行う
WSACleanup Winsockの使用を終了する
socket ソケットを作成する
closesocket ソケットを開放する
shutdown 片方向、又は両方向の接続を無効化する
bind ローカルアドレスをソケットに関連付ける
connect ソケットを接続する
listen ソケットの待ちうけを行う
accept ソケットの接続を受け入れる
send データを送信する
recv データを受信する
htons ネットワークバイトオーダーに変換する
ntohs ホストバイトオーダーに変換する
gethostbyaddr アドレスからホスト情報を得る
gethostbyname ホスト名からホスト情報を得る
getsockopt ソケットオプションを取得する
setsockopt ソケットオプションを設定する
WSACreateEvent ネットワークイベントを作成する
WSACloseEvent ネットワークイベントを開放する
WSAEventSelect イベントをソケットに結びつける
WSAWaitForMultipleEvents 複数のネットワークイベントを待つ
WSAEnumNetworkEvents ソケットに発生したイベントを列挙する

int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
  Winsockの初期化を行う。実行した回数だけWSACleanupを実行する必要がある。
Parameters
  wVersionRequested
    [in] 使用するWinsockのバージョン。上位バイトにはマイナーバージョン、
         下位バイトにはメジャーバージョンを入れる。
  lpWSAData 
    [out] WSADATA構造体のポインタを渡す。Winsockの詳細を受け取る。
Return Values
  成功すれば0、失敗すれば以下のエラーコードの一つを返す。
    Error Code
    WSASYSNOTREADY    :ネットワークシステムの準備が出来ていません。
    WSAVERNOTSUPPORTED:このバージョンのソケットがサポートされていません。
    WSAEINPROGRESS    :ブロッキング処理中です。
    WSAEPROCLIM       :タスクの限界に達しました。
    WSAEFAULT         :WSADATAのポインタが不正です。

typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; } WSADATA, *LPWSADATA; WSAStartupに渡し、情報を受け取る構造体。 Members wVersion Winsockのライブラリのバージョン wHighVersion 使用可能な最高のバージョン。通常これはwVersionと同じである。 szDescription ライブラリの情報を表す文字列 szSystemStatus 状態、または構成情報を表す文字列 iMaxSockets 互換性のために残されている。Winsock2ではこの情報を無視すべき。 iMaxUdpDg 互換性のために残されている。getsockoptを使用すべき。 lpVendorInfo 互換性のために残されている。ベンダー情報にアクセスするにはgetsockoptを使用すべき Note. wVersionの値が2以上ならiMaxsockets、iMaxUdpDg、lpVendorInfoメンバーを無視するべきである。
int WSACleanup (void); Winsockの使用を終える。 Return Values 成功すれば0、失敗すればSOCKET_ERRORを返す。 WSAGetLastErrorを呼び出すことによってエラー情報を受け取ることが出来る。
SOCKET socket( int af, int type, int protocol ); ソケットを作成します。 Parameters af [in] アドレスファミリを指定。通常AF_INETを使用する。 type [in] 新しいソケットの種類を指定する。Winsock1.1のために用意されたものは↓の二つである。 SOCK_STREAM:TCPを使用する。 SOCK_DGRAM :UDPを使用する。 Winsock2では、多くの新しいソケットタイプが導入されている。 protocol [in] プロトコルで使用される。アドレスファミリに従う。0でいいっぽい? Return Values 成功すれば新しいソケットディスクリプタを返す。そうでなければINVALID_SOCKETが返る。 WSAGetLastErrorでエラーコードを取得することが出来る。
int closesocket( SOCKET s ); ソケットを閉じる。 Parameters s [in] ソケット Return Values 成功すると0、失敗するとSOCKET_ERRORを返す。 WSAGetLastErrorでエラー情報を受け取ることが出来る。
int shutdown( SOCKET s, int how ); ソケットの送受信を無効にする。 Parameters s [in] ソケット how [in] どのタイプの操作を無効にするか SD_RECIEVE 受信を無効にする。 SD_SEND 送信を無効にする。 SD_BOTH 両方 Return Values 成功すると0、失敗するとSOCKET_ERRORを返す。 WSAGetLastErrorでエラー情報を受け取ることが出来る。 Note closesocketを呼び出す前にshutdownすべき。
int bind( SOCKET s, const struct sockaddr FAR *name, int namelen ); ローカルアドレスをソケットに関連付ける。 Parameters s [in] 関連付けるソケットを指定する name [in] ソケットに割り当てるアドレスを表すSOCKADDR構造体のポインタ namelen [in] nameの長さ Return Values 成功すれば0、そうでなければSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
int connect( SOCKET s, const struct sockaddr FAR *name, int namelen ); 指定されたソケットを接続する。 Parameters s [in] 接続されていないソケットを指定する。 name [in] 接続情報 namelen [in] nameの長さ Return Values 成功すれば0、失敗すればSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
int listen( SOCKET s, int backlog ); 接続要求を待ち受けます。 Parameters s [in] 接続されていないソケットを指定 backlog [in] 接続待ち行列の長さ。SOMAXCONNに設定されると、適正な最大サイズが指定される。 Return Values 成功すれば0、そうでなければSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
SOCKET accept( SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen ); 接続要求を受け入れる。 Parameters s [in] listen関数を実行しているものと同じソケットを指定する。 addr [out] 接続情報を受け取るバッファへのポインタ addrlen [out] バッファのサイズ Return Values 成功すれば接続された新しいソケットを返す。失敗するとINVALID_SOCKETを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
struct sockaddr { u_short sa_family; char sa_data[14]; }; 選択されたプロトコルによってsockaddr構造体は異なる。 sa_familyパラメータを除いてネットワークバイトオーダーで表される。 Winsock2では厳密にsockaddr構造体に解釈されない。 これは互換性のためにこのように表されている。 実際はアドレスファミリによって異なって解釈され、唯一sa_familyだけは 全てにおいてアドレスファミリであると解釈される。 以下の構造体はTCP/IPにおいて使用される。 struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; };
int send(SOCKET s, const char FAR *buf, int len, int flags ); 接続されたソケットにデータを送信する。 Parameters s [in] 接続されたソケット buf [in] 送信するデータのバッファ len [in] バッファの長さ flags [in] 送信フラグ。以下のフラグをOR演算子で使用できる MSG_DONTROUTE:ルーティングすべきではないと指示する。これはサービスによって無視されることがある MSG_OOB :OOBデータを送信する Return Values 成功すると送信したバイト数を返す。そうでなければSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
int recv( SOCKET s, char FAR *buf, int len, int flags ); 接続されたソケットからデータを受信する。 Parameters s [in] 接続されたソケット buf [in] 受信するデータのバッファ len [in] バッファの長さ flags [in] 送信フラグ。以下のフラグをOR演算子で使用できる MSG_DONTROUTE:ルーティングすべきではないと指示する。これはサービスによって無視されることがある MSG_OOB :OOBデータを送信する Return Values 成功すると受信したバイト数を返す。そうでなければSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
u_short htons( u_short hostshort );  u_short値をホストバイトオーダーからTCP/IPネットワークバイトオーダーに変換する  (ビッグエンディアン値に) Parameters hostshort [in] 16bitのホストバイトオーダー値を指定する ReturnValues TCP/IPネットワークバイトオーダー値を返す
u_short ntohs( u_short netshort );  u_short値をTCP/IPネットワークバイトオーダーからホストバイトオーダーに変換する  (IntelCPUならリトルエンディアンに) Parameters  netshort   [in] 16bitのTCP/IPネットワークバイトオーダー値を指定する ReturnValues ホストバイトオーダー値を返す
struct HOSTENT FAR * gethostbyaddr( const char FAR *addr, int len, int type );  ネットワークアドレスから対応するホスト情報を得る。 Parameters addr [in] ネットワークバイトオーダーの値へのポインタ len [in] アドレス長 type [in] AF_INETアドレスファミリタイプのようなアドレスの種類。(TCP,UDPや他のインターネットプロトコル によって定義さている。)アドレスファミリタイプやそれらに準じる値はwinsock2.hにて定義されている。 ReturnValues エラーが発生しなければHOSTENT構造体のポインタを返し、そうでなければ0を返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
struct hostent FAR *gethostbyname( const char FAR *name ); ホスト名に対応するホスト情報をネットワークデータベースから得る。 Parameters name [in] 解決するためのnullで終わるホスト名 ReturnValues エラーが発生しなければHOSTENT構造体のポインタを返し、そうでなければ0を返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
int getsockopt( SOCKET s, int level, int optname, char FAR *optval, int FAR *optlen ); int setsockopt( SOCKET s, int level, int optname, const char FAR *optval, int optlen ); ソケットオプションを取得/設定する。 Parameters s [in] ソケットを指定する。 level [in] サポートしているレベルはSOL_SOCKETとIPPROTO_TCPを含んでいる。 optname [in] 取得/設定されるオプション optval [in] 要求されたオプションのためのバッファ。 optlen [in] optvalのバッファサイズ Remarks TCP/IPオプションはソケットをbindした後でチェックすること。 サポートされているオプション level=SOL_SOCKET Get/Set ↓ 値 種類 意味 G SO_ACCEPTCONN BOOL ソケットがlisten中であるか G/S SO_BROADCAST BOOL ソケットがbloadcast messageの伝達のために構成されているか G/S SO_CONDITIONAL_ACCEPT BOOL 現在のソケットがシステムデフォルトかを返す? G/S SO_DEBUG BOOL デバッグが可能か G/S SO_DONTLINGER BOOL TRUEであるならSO_LINEARオプションは無効である G/S SO_DONTROUTE BOOL ルーティングが無効、ATMソケットにサポートされない G SO_ERROR int エラーを検索し、クリアします G SO_GROUP_ID GROUP 予約済み G/S SO_GROUP_PRIORITY int 予約済み G/S SO_KEEPALIVE BOOL Keep-alivesを送る。ATMソケットにサポートされない G/S SO_LINGER LINGER structure 現在のlinger optionsを返します G SO_MAX_MSG_SIZE unsigned int SOCK_DGRAMのようなメッセージ指向ソケットの最大メッセージ数、 ストリーム指向ソケットでは無効 G/S SO_OOBINLINE BOOL 通常のデータ・ストリームでOOBデータを受け取る。 G SO_PROTOCOL_INFO WSAPROTOCOL_INFO プロトコル情報の記述 G/S SO_RCVBUF int 受信バッファのサイズ G/S SO_REUSEADDR BOOL すでに使用中のアドレスにソケットを結びつけることが出来る。 G/S SO_SNDBUF int 送信バッファのサイズ G SO_TYPE int ソケットタイプ(例えばSOCK_STREAM) S SO_EXCLUSIVEADDRUSE BOOL ソケットを排他アクセスにする。NT4.0,SP4か2000以上が必要 G/S PVD_CONFIG Service Provider サービスプロバイダ特有のデータ Dependent level = IPPROTO_TCP G/S TCP_NODELAY BOOL Nagleアルゴリズムを無効にする。 level = NSPROTO_IPX Windows2000、NTは全てのオプションをサポートするが、 Windows95,98はIPX_PTYPE,IPX_FILTERPTYPE,IPX_DSTYPE,IPX_RECVHDR,IPX_MAXSIZE,IPX_ADDRESSだけをサポートする G/S IPX_PTYPE int IPXパケットタイプを取得/設定する G/S IPX_FILTERPTYPE int フィルタパケットタイプを取得/設定する S IPX_STOPFILTERPTYPE int フィルタタイプがIPX_FILTERTYPEと共にフィルタリングされるのを停止する G/S IPX_DSTYPE int あらゆるパケットのSPXヘッダを取得/設定する G/S IPX_EXTENDED_ADDRESS BOOL 拡張アドレシングが可能か G/S IPX_RECVHDR BOOL ヘッダーがすべて送られるか否かに関係なく、ヘッダーを受ける? G IPX_MAXSIZE int 送ることができる最大のデータサイズ G IPX_ADDRESS IPX_ADDRESS_DATA IPXが制限されている特定のアダプターに関する情報 structure G IPX_GETNETINFO IPX_NETNUM_DATA 特定のIPXネットワーク番号に関する情報 structure G IPX_GETNETINFO_NORIP IPX_NETNUM_DATA 特定のIPXネットワーク番号に関する情報、RIPを使用しない。 structure G IPX_SPXGETCONNECTIONSTATUS IPX_SPXCONNSTATUS_DATA 接続SPXソケットに関する情報 structure G IPX_ADDRESS_NOTIFY IPX_ADDRESS_DATA IPXが制限されているアダプター上で変化が起こると通知を得る。 structure G IPX_MAX_ADAPTER_NUM int アダプターの最大数。0ベース G IPX_RERIPNETNUMBER IPX_NETNUM_DATA 類似したIPX_GETNETINFOがあってもローカルキャッシュがあっても structure 強制的にRIPを使うためのIPX? S IPX_RECEIVE_BROADCAST BOOL ブロードキャストパケットがソケットでありうることを示す デフォルトでTRUEに設定する。ブロードキャストを使用しない場合 FALSEに設定すべき。 G/S IPX_IMMEDIATESPXACK BOOL ACKを送る前にSPX接続を遅らせないよう指示する。 前後方向の負荷のないアプリケーションはTRUEに設定すべき
WSAEVENT WSACreateEvent (void); 新しいイベントオブジェクトを作成する。 Return Values 成功すればイベントオブジェクトのハンドルを返す。そうでなければWSA_INVALID_EVENTを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
BOOL WSACloseEvent( WSAEVENT hEvent ); イベントハンドルをクローズする。 Return Values 成功すればTRUEを返す。失敗するとFALSEを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。
int WSAEventSelect( SOCKET s, WSAEVENT hEventObject, long lNetworkEvents ); 指定されたソケットにFD_xxxネットワークイベントとイベントオブジェクトを関連付ける Parameters s [in] ソケット hEventObject [in] 関連付けるイベントオブジェクト lNetworkEvents [in] ネットワークイベントのイベントマスクの組み合わせ 指定できるイベント Event 最可能にする関数 FD_READ recv, recvfrom, WSARecv, or WSARecvFrom. FD_WRITE send, sendto, WSASend, or WSASendTo. FD_OOB recv, recvfrom, WSARecv, or WSARecvFrom. FD_ACCEPT accept or WSAAccept がWSATRY_AGAINエラーを出さなかったときに、 状態関数がCF_DEFERを返したのを示す FD_CONNECT None.. FD_CLOSE None. FD_QOS WSAIoctlをSIO_GET_QOSと共に呼び出したとき FD_GROUP_QOS Reserved. FD_ROUTING_INTERFACE_CHANGE WSAIoctlをSIO_ROUTING_INTERFACE_CHANGEと共に呼び出したとき FD_ADDRESS_LIST_CHANGE WSAIoctlをSIO_ADDRESS_LIST_CHANGEと共に呼び出したとき Return Values 成功すれば0、失敗すればSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。 Remarks WSAEventSelectはソケットを自動的に非ブロッキングモードにする。
DWORD WSAWaitForMultipleEvents( DWORD cEvents, const WSAEVENT FAR *lphEvents, BOOL fWaitAll, DWORD dwTimeout, BOOL fAlertable ); Parameters cEvents [in] イベントオブジェクトの数。1以上WSA_MAXIMUM_WAIT_EVENTS以下で指定する。 lphEvents [in] イベントオブジェクトハンドルの配列のポインタ fWaitAll [in] TRUEなら全てのイベントがシグナル状態になったときに戻る。FALSEならどれか一つがシグナルのときに戻る。 dwTimeout [in] タイムアウト時間をミリ秒単位で指定する fAlertable [in] 関数から戻るときに、TRUEならI/O完了ルーチンが実行される。FALSEなら実行されない。 Return Values 成功すれば、原因を表すイベントオブジェクト返す。失敗するとWSA_WAIT_FAILEDを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。 成功時の戻り値は以下のうちの一つである。 WSA_WAIT_EVENT_0 to fWaitAllがTRUEならば全てのイベントがシグナルになったことを表す。 (WSA_WAIT_EVENT_0 + cEvents - 1) FALSEならばWSA_WAIT_EVENT_0を引いた戻り値はシグナル状態になった イベントハンドルのインデックスを表す WAIT_IO_COMPLETION 一つ以上のI/O完了ルーチンが実行のためにキューに詰まれた WSA_WAIT_TIMEOUT タイムアウトが発生した。
int WSAEnumNetworkEvents( SOCKET s, WSAEVENT hEventObject, LPWSANETWORKEVENTS lpNetworkEvents ); ソケットに発生したイベントの発見、イベントのクリア、任意でイベントオブジェクトのリセットを行う Parameters s [in] 調査するソケット hEventObject [in] (オプション)リセットされる任意の関連イベントハンドル。 lpNetworkEvents [out] 発生したネットワークイベントを受け取るWSANETWORKEVENTS構造体のポインタ Return Values 成功すれば0、そうでなければSOCKET_ERRORを返す。 WSAGetLastErrorでエラーコードを取得することが出来る。