socket函数

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

af:通信协议的协议族,对于TCP/IP协议族,该参数置PF_INET;

type:流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;

protocol:程序所使用的通信协议;

该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程 空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接 字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在 操作系统的内核缓冲里。下面是一个创建流套接字的例子:
struct protoent *ppe;
ppe=getprotobyname("tcp");
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

getprotobyname():依照通讯协定 (protocol) 的名称来获取该通讯协定的其他资料。
  格 式: struct protoent * getprotobyname( const char *name );
  参 数: name                通讯协定名称
  传回值: 成功 - 一指向 struct protoent 的指针

       失败 - NULL  

                          说明:                 利用通讯协定的名称来得知该通讯协定的别名、编号等资料。 

getprotobynumber():依照通讯协定的编号来获取该通讯协定的其他资料。
  格 式: struct protoent * getprotobynumber( int number );
  参 数: number  以 host 排列方式的通讯协定编号
  传回值: 成功 - 一指向 struct protoent 的指针
       失败 - NULL 
  说明: 利用通讯协定的编号来得知该通讯协定的名称、别名等资料。

在计算机网络编程中,socket函数通常用于创建一个网络通信的端点。不同的编程语言和操作系统可能提供了不同风格的API。以类Unix系统中常见的C语言API为例,socket函数的基本形式如下: ```c int socket(int domain, int type, int protocol); ``` 参数解释如下: 1. `domain`:指定通信领域(Address Family),即使用的地址类型。常见的地址族包括: - `AF_INET`:IPv4互联网地址族,使用IPv4地址。 - `AF_INET6`:IPv6互联网地址族,使用IPv6地址。 - `AF_UNIX` 或 `AF_LOCAL`:本地通信地址族,用于本地进程间通信。 2. `type`:指定socket类型,这决定了socket的行为。常见的socket类型有: - `SOCK_STREAM`:流式socket,提供可靠的面向连接的通信流。通常用于TCP协议。 - `SOCK_DGRAM`:数据报式socket,提供无连接的通信服务。通常用于UDP协议。 - `SOCK_RAW`:原始套接字,允许直接操作底层协议。 - `SOCK_SEQPACKET`:有序分组socket,提供有序的、可靠的、基于记录的连接方式。 3. `protocol`:指定使用的协议。通常在指定了`domain`和`type`后,这个参数可以设置为0,表示由系统根据前面两个参数自动选择合适的默认协议。如果需要使用特定的协议,可以设置为该协议对应的特定值。 创建socket后,通常还需要通过其他函数如`bind`, `connect`, `listen`, `accept`, `send`, `recv`等来进行进一步的操作,完成网络通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值