您所在的位置:读书频道 > 操作系统 > Linux > 13.2.2 socket函数

13.2.2 socket函数

2007-11-20 19:01 杜华 人民邮电出版社 字号:T | T
一键收藏,随时查看,分享好友!

《Linux编程技术详解》第13章的主要内容是Linux网络编程,本小节讲的是socket函数。

AD:

13.2.2  socket函数

socket函数的具体信息如表13.1所示。

表13.1   socket函数

头文件

<sys/types.h>

<sys/socket.h>

函数形式

int socket(int domain, int type, int protocol);

返回值

成功

失败

是否设置errno

创建的socket的文件描述符

−1

说明:
socket函数用于创建通信的套接字,并返回该套接字的文件描述符。参数domain指定了通信域,该参数用于选择通信协议族,其取值情况如表13.2所示。

表13.2   domain取值情况表

   

   

   

PF_UNIX, PF_LOCAL

本地通信

man 7 UNIX”可以获得具体帮助信息

PF_INET

IPv4协议

man 6 ip”可以获得具体帮助信息

PF_INET6

IPv6协议

PF_IPX

Novell公司的IPX协议

PF_NETLINK

与内核间的接口

man 7 netlink”可以获得具体帮助信息

PF_X25

ITU-T X.25 / ISO-8208

man 7 x25”可以获得具体帮助信息

PF_AX25

无线AX.25协议

PF_ATMPVC

访问原始ATMPVC

PF_APPLETALK

苹果公司的Appletalk协议

man 7 ddp”可以获得具体帮助信息

PF_PACKET

底层包接口

man 7 packet”获得具体帮助信息

参数type用于指定套接字的类型。套接字类型除了前面提到的流套接字、数据报套接字及原始套接字外,还有其他的几种类型,如表13.3所示。

表13.3   type参数可取值情况

套接字类型

   

SOCK_STREAM

提供有序、可靠、双向及基于连接的字节流。支持带外传输机制

SOCK_DGRAM

支持数据报

SOCK_SEQPACKET

提供有序、可靠、双向基于连接的数据报通信

SOCK_RAW

提供对原始网络协议的访问

SOCK_RDM

提供可靠的数据报层,但是不保证有序性

SOCK_PACKET

该参数已经废除

流套接字(SOCK_STREAM)与管道类似,是一种全双工的比特流。流套接字在发送或接收数据前必须处于连接状态。实现流套接字的通信协议保证了传输的数据不会丢失。

参数protocol用于指定套接字使用的通信协议。正常情况下,对于给定的协议族,只有单一的协议支持特定的套接字类型。这时,只要将protocol参数设置为0即可。
错误信息:

EACCES:创建指定类型的套接字失败。
EAFNOSUPPORT:不支持指定的地址族。
EINVAL:未知协议或未知的协议族。
EMFILE:进程文件表溢出。
ENFILE:达到打开文件的系统限制。
ENOBUFS或ENOMEM:内存不足。
EPROTONOSUPPORT:指定的协议类型在该域中不支持。

【责任编辑:杜书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

Oracle 10g应用指导与案例精讲
本书作者结合自己多年实践经验,从Oracle开发应用中遇到的问题着手,全面系统地介绍Oracle的安装与卸载、数据字典、安全管理以及

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro