• 検索結果がありません。

関数個別説明

ドキュメント内 MDH-J0005 (ページ 50-66)

第 4 章  ネットワーク 43

4.5   関数個別説明

1. AbortSocket(TCP)

【機能】

接続を切断(Rst)します。

【書式】

#include "socket.h"

int AbortSocket(

int iSocket );

【パラメータ】

iSocket ソケット記述子を設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

TCPの接続を切断します。

r = AbortSocket(iSock);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

2. AcceptSocket(TCP)

【機能】

待機中のソケットで接続要求を受け付けます。

【書式】

#include "socket.h"

int AcceptSocket(

int iSocket, int iType, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

iType 接続のタイプを設定します。

iTypeには(STREAM ⏐ TYPE_EXT)を設定してください。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

拡張アドレス情報が格納されます。

(ローカルとリモートのポートとIPアドレス)

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

ノンブロッキングモード時、接続されていない場合は、ERR_WOULD_BLOCKを返します。

【記述例】

TCPの接続要求を受け付けます。

NET_ADDR sNetAddr;

r = AcceptSocket(iListenSock, STREAM ⏐ TYPE_EXT, &sNetAddr);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

3. ConnectSocket(TCP/UDP)

【機能】

指定されたソケットへの接続を確立します。

【書式】

#include "socket.h"

int ConnectSocket(

int iSocket, int iType, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

iType 接続のタイプを設定します。

STREAM: TCPで接続する。

DATA_GRAM: UDPで接続する。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

UDPで接続します。

NET_ADDR sNetAddr;

r = ConnectSocket(iSock, DATA_GRAM, &sNetAddr);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

} TCPで接続します。

NET_ADDR sNetAddr;

r = ConnectSocket(iSock, STREAM, &sNetAddr);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

4. EofSocket(TCP)

【機能】

接続をクローズ(Fin)します。

【書式】

#include "socket.h"

int EofSocket(

int iSocket );

【パラメータ】

iSocket ソケット記述子を設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

TCPの接続を閉じます。

r = EofSocket(iSock);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

5. FlushSocket(TCP)

【機能】

出力データをフラッシュします。

【書式】

#include "socket.h"

int FlushSocket(

int iSocket );

【パラメータ】

iSocket ソケット記述子を設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

TCPの接続をフラッシュします。

6. GetAddressEx(TCP/UDP)

【機能】

接続中のローカル側IPアドレスを取得します。

【書式】

#include "socket.h"

int GetAddressEx(

int iSocket, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ローカル側IPアドレスを取得します。

NET_ADDR sNetAddr;

r = GetAddressEx(iSock, &sNetAddr);

if (r == 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

7. GetAddressInfo(TCP/UDP)

【機能】

ホスト名からアドレス情報を取得します。

【書式】

#include "socket.h"

int GetAddressInfo(

char *pszName, unsigned uFlags, NET_ADDR *psAddress );

【パラメータ】

pszName ホスト名の文字列へのポインタを設定します。

uFlags アドレス解決のフラグを設定します。

AI_PARSE: ホスト名にIPアドレス(例:“192.168.0.1”)を使用します。

AI_HOSTTAB: ローカルのホストテーブルを使用します。

DNS_IPV4: IPv4のアドレス解決にネームサーバを使用します。

DNS_IPV6: IPv6のアドレス解決にネームサーバを使用します。

DNS_IPV6_FIRST: IPv6のアドレス解決を優先します。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

【戻り値】

正常終了の場合、IPアドレスのサイズ(IPv4の場合は4)を返します。

異常終了の場合、0を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

UDPで接続します。

NET_ADDR sNetAddr;

r = GetAddressInfo("192.168.0.1", AI_PARSE , &sNetAddr);

if (r == 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

8. GetPeerAddressEx(TCP)

【機能】

接続中のリモート側IPアドレスを取得します。

【書式】

#include "socket.h"

int GetPeerAddressEx(

int iSocket, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

拡張アドレス情報が格納されます。

(ローカルとリモートのポートとIPアドレス)

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

リモート側IPアドレスを取得します。

NET_ADDR sNetAddr;

r = GetPeerAddressEx(iSock, &sNetAddr);

if (r == 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

9. GetSocket(TCP/UDP)

【機能】

ソケットを作成します。

【書式】

#include "socket.h"

int GetSocket(

void );

【パラメータ】

なし

【戻り値】

正常終了の場合、ソケット記述子(0以上)を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ソケットを作成します。

NET_ADDR sNetAddr;

iSocket = GetSocket();

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

10. ListenAcceptSocket(TCP)

【機能】

ソケットを受動待機モードにするよう要求します。

【書式】

#include "socket.h"

int ListenAcceptSocket(

int iSocket, int iType, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

iType 接続のタイプを設定します。

iTypeにはSTREAMを設定してください。

STREAM:TCPの接続要求を受け付けます。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ソケットをTCPの接続要求待ちの状態に設定します。

NET_ADDR sNetAddr;

r = ListenAcceptSocket(iSock, STREAM, &sNetAddr);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

11. ListenSocket(UDP)

【機能】

ソケットを受動待機モードにします。

【書式】

#include "socket.h"

int ListenSocket(

int iSocket, int iType, NET_ADDR *psAddress );

【パラメータ】

iSocket ソケット記述子を設定します。

iType 接続のタイプを設定します。

iTypeにはDATA_GRAMを設定してください。

DATA_GRAM:UDPの接続を受け付けます。

psAddress IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ソケットをUDPの受信を受け付ける状態に設定します。

NET_ADDR sNetAddr;

r = ListenSocket(iSock, DATA_GRAM, &sNetAddr);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

12. ReadFromSocket(UDP)

【機能】

データと送信側アドレスを受信します。

【書式】

#include "socket.h"

int ReadFromSocket(

int iSocket, char *pcBuf, unsigned uLen, NET_ADDR *psForm, unsigned uFlags );

【パラメータ】

iSocket ソケット記述子を設定します。

pcBuf データを受け取るバッファへのポインタを設定します

uLen データを受け取るバッファのサイズを設定します。

psForm IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

拡張アドレス情報が格納されます。

(ローカルとリモートのポートとIPアドレス) uFlags オプションフラグの設定を行います。

NET_FLG_PEEK: 待ち状態のデータを受信しますが、ソケット

をキューから削除しません。

NET_FLG_NON_BLOCKING: ノンブロッキングモードに設定します。

NET_FLG_EXT: 拡張アドレス情報を返します。

【戻り値】

正常終了の場合、受信データ長(0以上)を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

ノンブロッキングモード時、受信データがない場合は、ERR_WOULD_BLOCKを返します。

【記述例】

データを受信します。

NET_ADDR sNetAddr;

char cBuff [1024];

r = ReadFromSocket ( iSock, cBuff, 1024, &sNetAddr, NET_FLG_EXT);

if (r < 0){

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

13. ReadSocket(TCP/UDP)

【機能】

接続されているソケットデータを受信します。

【書式】

#include "socket.h"

int ReadSocket(

int iSocket, char *pcBuf, unsigned uLen, NET_ADDR *psFrom, unsigned uFlags );

【パラメータ】

iSocket ソケット記述子を設定します。

pcBuf データを受け取るバッファへのポインタを設定します。

uLen データを受け取るバッファのサイズを設定します。

psFrom IPアドレスを格納するNET_ADDR構造体のポインタを設定します。

拡張アドレス情報が格納されます。

(ローカルとリモートのポートとIPアドレス)

uFlags オプションフラグの設定を行います。

NET_FLG_PEEK: 待ち状態のデータを受信しますが、ソケット

をキューから削除しません。

NET_FLG_NON_BLOCKING: ノンブロッキングモードに設定します。

NET_FLG_EXT: 拡張アドレス情報を返します。

【戻り値】

正常終了の場合、受信データ長(0以上)を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

ノンブロッキングモード時、受信データがない場合は、ERR_WOULD_BLOCKを返します。

【記述例】

データを受信します。

NET_ADDR sNetAddr;

char cBuff [1024];

r = ReadSocket ( iSock, cBuff, 1024, &sNetAddr, NET_FLG_EXT);

if (r < 0){

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

14. ReleaseSocket(TCP/UDP)

【機能】

ソケットを閉じます。

【書式】

#include "socket.h"

int ReleaseSocket(

int iSocket );

【パラメータ】

iSocket ソケット記述子を設定します。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ソケットを解放します。

r = ReleaseSocket(iSock);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

15. SetSocketOption(TCP/UDP)

【機能】

指定されたソケットオプションの値を設定します。

【書式】

#include "socket.h"

int SetSocketOption(

int iSocket, int iLevel, int iOption,

DWORD dwOptionValue,

int iLen

);

【パラメータ】

iSocket ソケット記述子を設定します。

iLevel オプションの所属するプロトコルレベルを設定します。

iOption データを受け取るバッファのサイズを設定します。

NET_OPT_NON_BLOCKING: ノンブロッキングモードの設定を行い

ます。

ブロッキングモード: dwOptionValue = 00000000h ノンブロッキングモード: dwOptionValue = 00000000h以外

NET_OPT_TIMEOUT: タイムアウトの設定を行います。

タイムアウトなし: dwOptionValue = 00000000h

タイムアウトあり: dwOptionValue = 00000000h以外(ms) dwOptionValue オプションの値を設定します。

iLen オプションのサイズを指定します。

本サイズは4固定です。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

ソケットをノンブロッキングモードに設定します。

r = SetSocketOption(iSock, 0, NET_OPT_NON_BLOCKING, 1, 4);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

16. WriteSocket(TCP/UDP)

【機能】

接続されているソケットでデータを送信します。

【書式】

#include "socket.h"

int WriteSocket(

int iSocket, char *pcBuf, unsigned uLen, unsigned uFlags );

【パラメータ】

iSocket ソケット記述子を設定します。

pcBuf 送信するデータが入っているバッファへのポインタを設定します。

uLen 送信するデータの長さを設定します。

uFlags オプションフラグの設定を行います。

NET_FLG_NON_BLOCKING: ノンブロッキングモードの設定を行います。

NET_FLG_BROADCAST: ブロードキャストの設定を行います。

【戻り値】

正常終了の場合、0以上を返します。

異常終了の場合、-1を返します。

詳細エラーコードはiNetErrNoに格納されます。

【記述例】

TCP/UDPでデータを返信します。

char rgcWriteBuff [1024];

r = WriteSocket(iSock, rgcWriteBuff, sizeof(rgcWriteBuff), 0);

if (r < 0) {

printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);

}

ドキュメント内 MDH-J0005 (ページ 50-66)