请输入您要查询的百科知识:

 

词条 socket()
释义

简述:

创建一个套接口。

#include <winsock.h>

SOCKET PASCAL FAR socket( int af, int type, int protocol);

af:一个地址描述。目前仅支持AF_INET格式,也就是说ARPA Internet地址格式。

type:新套接口的类型描述。

protocol:套接口所用的协议。如调用者不想指定,可用0。

注释

socket()函数用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源。如果协议protocol未指定(等于0),则使用缺省的连接方式。

对于使用一给定地址族的某一特定套接口,只支持一种协议。但地址族可设为AF_UNSPEC(未指定),这样的话协议参数就要指定了。协议号特定于进行通讯的“通讯域”。支持下述类型描述:

类型 解释

SOCK_STREAM 提供有序的、可靠的、双向的和基于连接的字节流,使用带外数据传送机制,为Internet地址族使用TCP。

SOCK_DGRAM 支持无连接的、不可靠的和使用固定大小(通常很小)缓冲区的数据报服务,为Internet地址族使用UDP。

SOCK_STREAM类型的套接口为全双向的字节流。对于流类套接口,在接收或发送数据前必需处于已连接状态。用connect()调用建立与另一套接口的连接,连接成功后,即可用send()和recv()传送数据。当会话结束后,调用closesocket()。带外数据根据规定用send()和recv()来接收。

实现SOCK_STREAM类型套接口的通讯协议保证数据不会丢失也不会重复。如果终端协议有缓冲区空间,且数据不能在一定时间成功发送,则认为连接中断,其后续的调用也将以WSAETIMEOUT错误返回。

SOCK_DGRAM类型套接口允许使用sendto()和recvfrom()从任意端口发送或接收数据报。如果这样一个套接口用connect()与一个指定端口连接,则可用send()和recv()与该端口进行数据报的发送与接收。

返回值

若无错误发生,socket()返回引用新套接口的描述字。否则的话,返回INVAID_SOCKET错误,应用程序可通过WSAGetLastError()获取相应错误代码。

错误代码:

WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。

WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。

WSAEAFNOSUPPORT:不支持指定的地址族。

WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。

WSAEMFILE:无可用文件描述字。

WSAENOBUFS:无可用缓冲区,无法创建套接口。

WSAEPROTONOSUPPORT:不支持指定的协议。

WSAEPROTOTYPE:指定的协议不适用于本套接口。

WSAESOCKTNOSUPPORT:本地址族中不支持该类型套接口。

参见

accept(), bind(), connect(), getsockname(), getsockopt(), setsockopt(), listen(), recv(), recvfrom(), select(), send(), sendto(), shutdown(), ioctlsocket().4.2 数据库例程

socket()

函数原型:

SOCKET WSAAPI socket(

int af,

int type,

int protocol

);

该函数及参数定义包含在winsock2.h头文件中,在MSDN中查不到具体参数。

参数选项及定义:

地址族af:(常用AF_INET实现TCP/UDP协议)

#define AF_UNSPEC 0 /* unspecified */

#define AF_UNIX 1 /* local to host (pipes, portals) */

#define AF_INET 2 /* internetwork: UDP, TCP, etc. */

#define AF_IMPLINK 3 /* arpanet imp addresses */

#define AF_PUP 4 /* pup protocols: e.g. BSP */

#define AF_CHAOS 5 /* mit CHAOS protocols */

#define AF_NS 6 /* XEROX NS protocols */

#define AF_IPX AF_NS /* IPX protocols: IPX, SPX, etc. */

#define AF_ISO 7 /* ISO protocols */

#define AF_OSI AF_ISO /* OSI is ISO */

#define AF_ECMA 8 /* european computer manufacturers */

#define AF_DATAKIT 9 /* datakit protocols */

#define AF_CCITT 10 /* CCITT protocols, X.25 etc */

#define AF_SNA 11 /* IBM SNA */

#define AF_DECnet 12 /* DECnet */

#define AF_DLI 13 /* Direct data link interface */

#define AF_LAT 14 /* LAT */

#define AF_HYLINK 15 /* NSC Hyperchannel */

#define AF_APPLETALK 16 /* AppleTalk */

#define AF_NETBIOS 17 /* NetBios-style addresses */

#define AF_VOICEVIEW 18 /* VoiceView */

#define AF_FIREFOX 19 /* Protocols from Firefox */

#define AF_UNKNOWN1 20 /* Somebody is using this! */

#define AF_BAN 21 /* Banyan */

#define AF_ATM 22 /* Native ATM Services */

#define AF_INET6 23 /* Internetwork Version 6 */

#define AF_CLUSTER 24 /* Microsoft Wolfpack */

#define AF_12844 25 /* IEEE 1284.4 WG AF */

套接字类型type:

#define SOCK_STREAM 1 /* stream socket */

#define SOCK_DGRAM 2 /* datagram socket */

#define SOCK_RAW 3 /* raw-protocol interface */

#define SOCK_RDM 4 /* reliably-delivered message */

#define SOCK_SEQPACKET 5 /* sequenced packet stream */

协议类型protocol:

#define IPPROTO_IP 0 /* dummy for IP */

#define IPPROTO_ICMP 1 /* control message protocol */

#define IPPROTO_IGMP 2 /* internet group management protocol */

#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */

#define IPPROTO_TCP 6 /* tcp */

#define IPPROTO_PUP 12 /* pup */

#define IPPROTO_UDP 17 /* user datagram protocol */

#define IPPROTO_IDP 22 /* xns idp */

#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/27 21:27:04