socket
関数シグネチャ
// WS2_32.dll
#include <windows.h>
SOCKET socket(
INT af,
WINSOCK_SOCKET_TYPE type,
INT protocol
);パラメーター
| 名前 | 型 | 方向 | 説明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| af | INT | in | アドレスファミリの指定です。アドレスファミリに指定可能な値は Winsock2.h ヘッダーファイルで定義されています。 Windows Vista 以降向けにリリースされた Windows SDK では、ヘッダーファイルの構成が変更され、アドレスファミリに指定可能な値は Ws2def.h ヘッダーファイルで定義されています。なお、Ws2def.h ヘッダーファイルは Winsock2.h から自動的にインクルードされるため、直接使用しないでください。 現在サポートされている値は AF_INET または AF_INET6 で、これらはそれぞれ IPv4 および IPv6 のインターネット アドレスファミリ形式です。アドレスファミリのその他のオプション(NetBIOS で使用する AF_NETBIOS など)は、そのアドレスファミリに対応する Windows Sockets サービスプロバイダーがインストールされている場合にサポートされます。なお、AF_ アドレスファミリ定数と PF_ プロトコルファミリ定数の値は同一であるため(例: AF_INET と PF_INET)、どちらの定数も使用できます。 以下の表はアドレスファミリの代表的な値を示していますが、他にも多くの値が指定可能です。
| ||||||||||||||||||
| type | WINSOCK_SOCKET_TYPE | in | 新しいソケットの種類の指定です。 ソケットの種類に指定可能な値は Winsock2.h ヘッダーファイルで定義されています。 以下の表は、Windows Sockets 2 でサポートされる type パラメーターに指定可能な値を示しています。
Windows Sockets 2 では、新しいソケットの種類が導入されました。アプリケーションは WSAEnumProtocols 関数を通じて、利用可能な各トランスポートプロトコルの属性を動的に検出できます。したがって、アプリケーションはあるアドレスファミリに対して指定可能なソケットの種類とプロトコルのオプションを判別し、このパラメーターを指定する際にこの情報を利用できます。Winsock2.h および Ws2def.h ヘッダーファイル内のソケットの種類の定義は、新しいソケットの種類、アドレスファミリ、プロトコルが定義されるたびに定期的に更新されます。 Windows Sockets 1.1 では、指定可能なソケットの種類は SOCK_DGRAM と SOCK_STREAM のみです。 | ||||||||||||||||||
| protocol | INT | in | 使用するプロトコルです。protocol パラメーターに指定可能なオプションは、指定されたアドレスファミリおよびソケットの種類に固有です。protocol に指定可能な値は Winsock2.h および Wsrm.h ヘッダーファイルで定義されています。 Windows Vista 以降向けにリリースされた Windows SDK では、ヘッダーファイルの構成が変更され、このパラメーターには Ws2def.h ヘッダーファイルで定義されている IPPROTO 列挙型の値のいずれかを指定できます。なお、Ws2def.h ヘッダーファイルは Winsock2.h から自動的にインクルードされるため、直接使用しないでください。 値に 0 を指定した場合、呼び出し元はプロトコルを指定しないことになり、サービスプロバイダーが使用する protocol を選択します。 af パラメーターが AF_INET または AF_INET6 で、type が SOCK_RAW の場合、protocol に指定された値が IPv6 または IPv4 パケットヘッダーのプロトコルフィールドに設定されます。 以下の表は protocol の代表的な値を示していますが、他にも多くの値が指定可能です。
|
戻り値の型: SOCKET
公式ドキュメント
socket 関数は、特定のトランスポートサービスプロバイダーにバインドされたソケットを作成します。
戻り値
エラーが発生しない場合、 socket は新しいソケットを参照する記述子を返します。それ以外の場合は INVALID_SOCKET が返され、 WSAGetLastError を呼び出すことで具体的なエラーコードを取得できます。
| エラーコード | 意味 |
|---|---|
| この関数を使用する前に、 WSAStartup の呼び出しが成功している必要があります。 | |
| ネットワークサブシステムまたは関連するサービスプロバイダーで障害が発生しました。 | |
| 指定されたアドレスファミリはサポートされていません。たとえば、アプリケーションが AF_IRDA アドレスファミリのソケットを作成しようとしたが、ローカルコンピューターに赤外線アダプターとデバイスドライバーがインストールされていない場合です。 | |
| ブロッキングする Windows Sockets 1.1 の呼び出しが進行中であるか、サービスプロバイダーがコールバック関数をまだ処理中です。 | |
| 利用可能なソケット記述子がこれ以上ありません。 | |
| 無効な引数が指定されました。このエラーは、af パラメーターが AF_UNSPEC に設定され、type および protocol パラメーターが未指定の場合に返されます。 | |
| サービスプロバイダーが 2.2 以外のバージョンを返しました。 | |
| サービスプロバイダーが、無効または不完全なプロシージャテーブルを WSPStartup に返しました。 | |
| 利用可能なバッファー領域がありません。ソケットを作成できません。 | |
| 指定されたプロトコルはサポートされていません。 | |
| 指定されたプロトコルは、このソケットには種類が正しくありません。 | |
| サービスプロバイダーの初期化に失敗しました。このエラーは、レイヤードサービスプロバイダー (LSP) や名前空間プロバイダーが正しくインストールされていない場合、またはプロバイダーが正しく動作しない場合に返されます。 | |
| 指定されたソケットの種類は、このアドレスファミリではサポートされていません。 |
解説(Remarks)
socket 関数は、ソケット記述子と関連するリソースを割り当て、特定のトランスポートサービスプロバイダーにバインドします。Winsock は、要求されたアドレスファミリ、ソケットの種類、プロトコルのパラメーターの組み合わせをサポートする最初に利用可能なサービスプロバイダーを使用します。作成されるソケットは、既定でオーバーラップ属性を持ちます。Windows では、Mswsock.h で定義されている Microsoft 固有のソケットオプション SO_OPENTYPE がこの既定値に影響を与えることがあります。SO_OPENTYPE の詳細については、Microsoft 固有のドキュメントを参照してください。
オーバーラップ属性を持たないソケットは、 WSASocket を使用して作成できます。オーバーラップ操作を可能にするすべての関数(WSASend、 WSARecv、 WSASendTo、 WSARecvFrom、 WSAIoctl)も、オーバーラップ操作に関連するパラメーターの値が NULL であれば、オーバーラップソケット上での非オーバーラップ使用をサポートします。
プロトコルとそれをサポートするサービスプロバイダーを選択する際、この手続きはベースプロトコルまたはプロトコルチェーンのみを選択し、プロトコルレイヤー単体は選択しません。チェーン化されていないプロトコルレイヤーは、type や af の部分的な一致を持つとは見なされません。すなわち、適切なプロトコルが見つからない場合でも、 WSAEAFNOSUPPORT や WSAEPROTONOSUPPORT のエラーコードを引き起こすことはありません。
SOCK_STREAM などのコネクション型ソケットは全二重接続を提供し、データを送受信する前に接続状態になっている必要があります。別のソケットへの接続は connect 呼び出しで作成します。接続が確立されると、 send および recv 呼び出しでデータを転送できます。セッションが完了したら、 closesocket を実行する必要があります。
信頼性のあるコネクション型ソケットを実装するために使用される通信プロトコルは、データが失われたり重複したりしないことを保証します。ピアプロトコルがバッファー領域を持つデータを妥当な時間内に正常に送信できない場合、接続は切断されたと見なされ、以降の呼び出しはエラーコードが WSAETIMEDOUT に設定されて失敗します。
コネクションレスのメッセージ型ソケットでは、 sendto および recvfrom を使用して、任意のピアとの間でデータグラムを送受信できます。このようなソケットが特定のピアに接続されている場合、 send を使用してそのピアにデータグラムを送信でき、 recv を使用してこのピアからのみデータグラムを受信できます。
type が SOCK_RAW のソケットを受信する際、IPv6 と IPv4 では動作が異なります。IPv4 の受信パケットには、パケットのペイロード、次の上位層ヘッダー(たとえば TCP または UDP パケットの IP ヘッダー)、および IPv4 パケットヘッダーが含まれます。IPv6 の受信パケットには、パケットのペイロードと次の上位層ヘッダーが含まれます。IPv6 の受信パケットには IPv6 パケットヘッダーは含まれません。
af パラメーターが NetBIOS over TCP/IP 用の AF_NETBIOS の場合、type パラメーターには SOCK_DGRAM または SOCK_SEQPACKET を指定できます。AF_NETBIOS アドレスファミリの場合、protocol パラメーターは負の数で表現された LAN アダプター番号です。
Windows XP 以降では、次のコマンドを使用して Windows Sockets カタログを一覧表示し、インストールされているサービスプロバイダーと、サポートされているアドレスファミリ、ソケットの種類、プロトコルを確認できます。
netsh winsock show catalog
SOCK_RAW の種類のソケットのサポートは必須ではありませんが、サービスプロバイダーは可能な限り raw ソケットをサポートすることが推奨されます。
IrDA ソケットに関する注意
次の点に注意してください。- Af_irda.h ヘッダーファイルを明示的にインクルードする必要があります。
- SOCK_STREAM のみがサポートされます。SOCK_DGRAM の種類は IrDA ではサポートされません。
- protocol パラメーターは IrDA では常に 0 に設定されます。
サンプルコード
次の例は、特定のトランスポートサービスプロバイダーにバインドされたソケットを作成するための socket 関数の使用方法を示しています。#ifndef UNICODE
#define UNICODE 1
#endif
// link with Ws2_32.lib
#pragma comment(lib,"Ws2_32.lib")
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h> // Needed for _wtoi
int __cdecl wmain(int argc, wchar_t **argv)
{
//-----------------------------------------
// Declare and initialize variables
WSADATA wsaData = {0};
int iResult = 0;
// int i = 1;
SOCKET sock = INVALID_SOCKET;
int iFamily = AF_UNSPEC;
int iType = 0;
int iProtocol = 0;
// Validate the parameters
if (argc != 4) {
wprintf(L"usage: %s <addressfamily> <type> <protocol>\n", argv[0]);
wprintf(L"socket opens a socket for the specified family, type, & protocol\n");
wprintf(L"%ws example usage\n", argv[0]);
wprintf(L" %ws 0 2 17\n", argv[0]);
wprintf(L" where AF_UNSPEC=0 SOCK_DGRAM=2 IPPROTO_UDP=17\n", argv[0]);
return 1;
}
iFamily = _wtoi(argv[1]);
iType = _wtoi(argv[2]);
iProtocol = _wtoi(argv[3]);
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
wprintf(L"WSAStartup failed: %d\n", iResult);
return 1;
}
wprintf(L"Calling socket with following parameters:\n");
wprintf(L" Address Family = ");
switch (iFamily) {
case AF_UNSPEC:
wprintf(L"Unspecified");
break;
case AF_INET:
wprintf(L"AF_INET (IPv4)");
break;
case AF_INET6:
wprintf(L"AF_INET6 (IPv6)");
break;
case AF_NETBIOS:
wprintf(L"AF_NETBIOS (NetBIOS)");
break;
case AF_BTH:
wprintf(L"AF_BTH (Bluetooth)");
break;
default:
wprintf(L"Other");
break;
}
wprintf(L" (%d)\n", iFamily);
wprintf(L" Socket type = ");
switch (iType) {
case 0:
wprintf(L"Unspecified");
break;
case SOCK_STREAM:
wprintf(L"SOCK_STREAM (stream)");
break;
case SOCK_DGRAM:
wprintf(L"SOCK_DGRAM (datagram)");
break;
case SOCK_RAW:
wprintf(L"SOCK_RAW (raw)");
break;
case SOCK_RDM:
wprintf(L"SOCK_RDM (reliable message datagram)");
break;
case SOCK_SEQPACKET:
wprintf(L"SOCK_SEQPACKET (pseudo-stream packet)");
break;
default:
wprintf(L"Other");
break;
}
wprintf(L" (%d)\n", iType);
wprintf(L" Protocol = %d = ", iProtocol);
switch (iProtocol) {
case 0:
wprintf(L"Unspecified");
break;
case IPPROTO_ICMP:
wprintf(L"IPPROTO_ICMP (ICMP)");
break;
case IPPROTO_IGMP:
wprintf(L"IPPROTO_IGMP (IGMP)");
break;
case IPPROTO_TCP:
wprintf(L"IPPROTO_TCP (TCP)");
break;
case IPPROTO_UDP:
wprintf(L"IPPROTO_UDP (UDP)");
break;
case IPPROTO_ICMPV6:
wprintf(L"IPPROTO_ICMPV6 (ICMP Version 6)");
break;
default:
wprintf(L"Other");
break;
}
wprintf(L" (%d)\n", iProtocol);
sock = socket(iFamily, iType, iProtocol);
if (sock == INVALID_SOCKET)
wprintf(L"socket function failed with error = %d\n", WSAGetLastError() );
else {
wprintf(L"socket function succeeded\n");
// Close the socket to release the resources associated
// Normally an application calls shutdown() before closesocket
// to disables sends or receives on a socket first
// This isn't needed in this simple sample
iResult = closesocket(sock);
if (iResult == SOCKET_ERROR) {
wprintf(L"closesocket failed with error = %d\n", WSAGetLastError() );
WSACleanup();
return 1;
}
}
WSACleanup();
return 0;
}
Windows Phone 8: この関数は、Windows Phone 8 以降の Windows Phone ストアアプリでサポートされます。
Windows 8.1 および Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストアアプリでサポートされます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// WS2_32.dll
#include <windows.h>
SOCKET socket(
INT af,
WINSOCK_SOCKET_TYPE type,
INT protocol
);[DllImport("WS2_32.dll", SetLastError = true, ExactSpelling = true)]
static extern UIntPtr socket(
int af, // INT
int type, // WINSOCK_SOCKET_TYPE
int protocol // INT
);<DllImport("WS2_32.dll", SetLastError:=True, ExactSpelling:=True)>
Public Shared Function socket(
af As Integer, ' INT
type As Integer, ' WINSOCK_SOCKET_TYPE
protocol As Integer ' INT
) As UIntPtr
End Function' af : INT
' type : WINSOCK_SOCKET_TYPE
' protocol : INT
Declare PtrSafe Function socket Lib "ws2_32" ( _
ByVal af As Long, _
ByVal type As Long, _
ByVal protocol As Long) As LongPtr
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
socket = ctypes.windll.ws2_32.socket
socket.restype = ctypes.c_size_t
socket.argtypes = [
ctypes.c_int, # af : INT
ctypes.c_int, # type : WINSOCK_SOCKET_TYPE
ctypes.c_int, # protocol : INT
]
# GetLastError: use ctypes.GetLastError() (or ctypes.WinDLL(use_last_error=True))require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('WS2_32.dll')
socket = Fiddle::Function.new(
lib['socket'],
[
Fiddle::TYPE_INT, # af : INT
Fiddle::TYPE_INT, # type : WINSOCK_SOCKET_TYPE
Fiddle::TYPE_INT, # protocol : INT
],
Fiddle::TYPE_UINTPTR_T)#[link(name = "ws2_32")]
extern "system" {
fn socket(
af: i32, // INT
type: i32, // WINSOCK_SOCKET_TYPE
protocol: i32 // INT
) -> usize;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("WS2_32.dll", SetLastError = true)]
public static extern UIntPtr socket(int af, int type, int protocol);
"@
$api = Add-Type -MemberDefinition $sig -Name 'WS2_32_socket' -Namespace Win32 -PassThru
# $api::socket(af, type, protocol)#uselib "WS2_32.dll"
#func global socket "socket" sptr, sptr, sptr
; socket af, type, protocol ; 戻り値は stat
; af : INT -> "sptr"
; type : WINSOCK_SOCKET_TYPE -> "sptr"
; protocol : INT -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "WS2_32.dll"
#cfunc global socket "socket" int, int, int
; res = socket(af, type, protocol)
; af : INT -> "int"
; type : WINSOCK_SOCKET_TYPE -> "int"
; protocol : INT -> "int"; SOCKET socket(INT af, WINSOCK_SOCKET_TYPE type, INT protocol)
#uselib "WS2_32.dll"
#cfunc global socket "socket" int, int, int
; res = socket(af, type, protocol)
; af : INT -> "int"
; type : WINSOCK_SOCKET_TYPE -> "int"
; protocol : INT -> "int"import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
ws2_32 = windows.NewLazySystemDLL("WS2_32.dll")
procsocket = ws2_32.NewProc("socket")
)
// af (INT), type (WINSOCK_SOCKET_TYPE), protocol (INT)
r1, _, err := procsocket.Call(
uintptr(af),
uintptr(type),
uintptr(protocol),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // SOCKETfunction socket(
af: Integer; // INT
type: Integer; // WINSOCK_SOCKET_TYPE
protocol: Integer // INT
): NativeUInt; stdcall;
external 'WS2_32.dll' name 'socket';result := DllCall("WS2_32\socket"
, "Int", af ; INT
, "Int", type ; WINSOCK_SOCKET_TYPE
, "Int", protocol ; INT
, "UPtr") ; return: SOCKET●socket(af, type, protocol) = DLL("WS2_32.dll", "int socket(int, int, int)")
# 呼び出し: socket(af, type, protocol)
# af : INT -> "int"
# type : WINSOCK_SOCKET_TYPE -> "int"
# protocol : INT -> "int"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "ws2_32" fn socket(
af: i32, // INT
type: i32, // WINSOCK_SOCKET_TYPE
protocol: i32 // INT
) callconv(std.os.windows.WINAPI) usize;proc socket(
af: int32, # INT
`type`: int32, # WINSOCK_SOCKET_TYPE
protocol: int32 # INT
): uint {.importc: "socket", stdcall, dynlib: "WS2_32.dll".}pragma(lib, "ws2_32");
extern(Windows)
size_t socket(
int af, // INT
int type, // WINSOCK_SOCKET_TYPE
int protocol // INT
);ccall((:socket, "WS2_32.dll"), stdcall, Csize_t,
(Int32, Int32, Int32),
af, type, protocol)
# af : INT -> Int32
# type : WINSOCK_SOCKET_TYPE -> Int32
# protocol : INT -> Int32
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
uintptr_t socket(
int32_t af,
int32_t type,
int32_t protocol);
]]
local ws2_32 = ffi.load("ws2_32")
-- ws2_32.socket(af, type, protocol)
-- af : INT
-- type : WINSOCK_SOCKET_TYPE
-- protocol : INT
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('WS2_32.dll');
const socket = lib.func('__stdcall', 'socket', 'uintptr_t', ['int32_t', 'int32_t', 'int32_t']);
// socket(af, type, protocol)
// af : INT -> 'int32_t'
// type : WINSOCK_SOCKET_TYPE -> 'int32_t'
// protocol : INT -> 'int32_t'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("WS2_32.dll", {
socket: { parameters: ["i32", "i32", "i32"], result: "usize" },
});
// lib.symbols.socket(af, type, protocol)
// af : INT -> "i32"
// type : WINSOCK_SOCKET_TYPE -> "i32"
// protocol : INT -> "i32"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
size_t socket(
int32_t af,
int32_t type,
int32_t protocol);
C, "WS2_32.dll");
// $ffi->socket(af, type, protocol);
// af : INT
// type : WINSOCK_SOCKET_TYPE
// protocol : INT
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface Ws2_32 extends StdCallLibrary {
Ws2_32 INSTANCE = Native.load("ws2_32", Ws2_32.class);
long socket(
int af, // INT
int type, // WINSOCK_SOCKET_TYPE
int protocol // INT
);
}@[Link("ws2_32")]
lib LibWS2_32
fun socket = socket(
af : Int32, # INT
type_ : Int32, # WINSOCK_SOCKET_TYPE
protocol : Int32 # INT
) : LibC::SizeT
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef socketNative = UintPtr Function(Int32, Int32, Int32);
typedef socketDart = int Function(int, int, int);
final socket = DynamicLibrary.open('WS2_32.dll')
.lookupFunction<socketNative, socketDart>('socket');
// af : INT -> Int32
// type : WINSOCK_SOCKET_TYPE -> Int32
// protocol : INT -> Int32
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function socket(
af: Integer; // INT
type: Integer; // WINSOCK_SOCKET_TYPE
protocol: Integer // INT
): NativeUInt; stdcall;
external 'WS2_32.dll' name 'socket';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "socket"
c_socket :: Int32 -> Int32 -> Int32 -> IO CUIntPtr
-- af : INT -> Int32
-- type : WINSOCK_SOCKET_TYPE -> Int32
-- protocol : INT -> Int32
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let socket =
foreign "socket"
(int32_t @-> int32_t @-> int32_t @-> returning size_t)
(* af : INT -> int32_t *)
(* type : WINSOCK_SOCKET_TYPE -> int32_t *)
(* protocol : INT -> int32_t *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library ws2_32 (t "WS2_32.dll"))
(cffi:use-foreign-library ws2_32)
(cffi:defcfun ("socket" socket :convention :stdcall) :uint64
(af :int32) ; INT
(type :int32) ; WINSOCK_SOCKET_TYPE
(protocol :int32)) ; INT
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $socket = Win32::API::More->new('WS2_32',
'WPARAM socket(int af, int type, int protocol)');
# my $ret = $socket->Call($af, $type, $protocol);
# af : INT -> int
# type : WINSOCK_SOCKET_TYPE -> int
# protocol : INT -> int
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。関連項目
- f WSASocketW — プロトコル情報やフラグを指定してソケットを作成する。
- f accept — 接続要求を受け入れ新しいソケットを生成する。
- f bind — ソケットにローカルアドレスを割り当てる。
- f closesocket — ソケットを閉じてリソースを解放する。
- f connect — 指定アドレスへのソケット接続を確立する。
- f getsockname — ソケットに割り当てられたローカルアドレスを取得する。
- f getsockopt — ソケットオプションの値を取得する。
- f ioctlsocket — ソケットの入出力モードを制御する。
- f listen — ソケットを接続待ち受け状態にする。
- f recv — 接続ソケットからデータを受信する。
- f recvfrom — ソケットからデータを受信し送信元アドレスを取得する。
- f select — 複数ソケットの入出力可否を監視する。