第 4 章 CPU 制御 56
5.5 関数個別説明
1. ipconfig
【機能】
IPアドレスを設定します。
【書式】
#include "IFDJSOCK.h"
int ipconfig(
int int_vect,
unsigned long ipaddr, unsigned long ipmask, ); unsigned long ipdefgw
【パラメータ】
int_vect パケットドライバのソフトウェア割り込み番号を設定します。
パケットドライバのデフォルトは0x60です。
ipaddr IPアドレスを設定します。
ipmask サブネットマスクを設定します。
ipdefgw デフォルトゲートウェイアドレスを設定します。
使用しない場合は0を設定します。
【戻り値】
正常終了の場合、0以上のソケット記述子を返します。
異常終了の場合、-1を返します。
本関数を DOS System(日本語環境モデル)以外で使用した場合、-9を返します。
【記述例】
TCPの接続を切断します。
ソフトウェア割り込み番号 = 0x60
IPアドレス = 192.168.0.2 サブネットマスク = 255.255.255.0 デフォルトゲートウェイ = なし
r = ipconfig(0x60, inet_addr("192.168.0.2"), 0xFFFFFF00L, 0);
if (r < 0) {
/* エラー */
} else {
/* 正常終了 */
}
2. socket
【機能】
ソケット記述子を作成します。
【書式】
#include "IFDJSOCK.h"
int socket(
int af,
int type,
int protocol );
【パラメータ】
af アドレスファミリを設定します。
AF_INETを設定します。
type ソケットタイプを設定します。
SOCK_DGRAMを設定します。
protocol プロトコルを設定します。
0を設定します。
【戻り値】
正常終了の場合、0以上を返します。
異常終了の場合、-1を返します。
本関数を DOS System(日本語環境モデル)以外で使用した場合、-9を返します。
【記述例】
ソケットを作成します。
int sd;
sd = socket(AF_INET, SOCK_DGRAM. 0) if (sd < 0) {
/* エラー */
} else {
/* 正常終了 */
}
3. sendto
【機能】
指定されたアドレスへデータを送信します。
【書式】
#include "IFDJSOCK.h"
int sendto(
int s,
char far *buf,
int len,
int flags,
struct sockaddr far *to,
int tolen
);
【パラメータ】
s ソケット記述子を設定します。
buf 送信するデータが入っているバッファへのポインタを設定します。
len Bufのデータの長さを設定します。
flags オプションです。0を設定します。
to sockaddr構造体へのポインタを設定します。
マルチキャストアドレス, ポート番号を設定します。
struct in_addr { union { struct {
unsigned char s_b1, s_b2, s_b3, s_b4;
} S_un_b;
struct {
unsigned short s_w1, s_w2;
} S_un_w;
unsigned long S_addr;
} S_un;
};
struct sockaddr_in {
short sin_family; /* AF_INET のみ設定可 */
unsigned short sin_port; /* 送信先 ポート番号 */
struct in_addr sin_addr; /* 送信先 IPアドレス1 */
char sin_zero[8];
};
tolen toの指すsockaddr構造体の長さです。
【戻り値】
正常終了の場合、0以上を返します。
異常終了の場合、-1を返します。
本関数を DOS System(日本語環境モデル)以外で使用した場合、-9を返します。
【制限事項】
以下の制限事項があります。
1. IPフラグメントには対応していません。
2. M TUは1500, TTLは16に設定されています。
【記述例】
TCPの接続要求を受け付けます。
マルチキャストIPアドレス239.192.1.2のport12345に、
文字列”HELLO”を送信します。
struct sockaddr_in addr;
char send_data = "HELLO"; /* 送信データ */
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.S_un.S_addr = inet_addr("239.192.1.2");
r = sendto(sd, send_data, strlen(send_data), 0,
(struct sockaddr far *) &addr, sizeof(struct sockaddr_in));
if (sd < 0) {
/* エラー */
} else {
/* 正常終了 */
}
4. close_socket
【機能】
ソケットを閉じます。
【書式】
#include "IFDJSOCK.h"
int clise_socket(
int s
);
【パラメータ】
s 閉じるソケットのソケット記述子を設定します。
【戻り値】
正常終了の場合、0以上を返します。
異常終了の場合、-1を返します。
本関数を DOS System(日本語環境モデル)以外で使用した場合、-9を返します。
【記述例】
ソケット記述子sdのソケットをクローズします。
r = close_socket(sd);
if (r < 0) {
printf("ERROR: iNetErrNo = %d ¥n", iNetErrNo);
}