- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
//主要头文件
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include arpa/inet.h
int socket(int domain, int type, int protocol);// 建立套接字成功,则返回这个套接字的编号。如果不成功,则返回-1。
domain 指定使用何种的地址类型,可能的值是下面这些系统常量。
?? PF_UNIX,PF_LOCAL,AF_UNIX,AF_LOCAL:这些是UNIX 进程通信协议。
?? PF_INET,AF_INET:Ipv4 网络协议。
?? PF_INET6,AF_INET6:Ipv6 网络协议。
?? PF_IPX,AF_IPX:IPX-Novell 协议。
?? PF_NETLINK,AF_NETLINK:核心用户接口装置。
?? PF_X25,AF_X25、ITU-T X.25:ISO-8208 协议。
?? PF_AX25,AF_AX25:业余无线AX.25 协议。
?? PF_ATMPVC,AF_ATMPVC:存取原始ATM PVCs。
?? PF_APPLETALK,AF_APPLETALK:DDP 网络协议。
?? PF_PACKET,AF_PACKET:初级封包接口。
type 的作用是设置通信的协议类型,可能的取值如下所示。
?? SOCK_STREAM:提供面向连接的稳定数据传输,即TCP 协议。
?? OOB:在所有数据传送前必须使用connect()来建立连线状态。
?? SOCK_DGRAM:使用不连续不可靠的数据包连接。
?? SOCK_SEQPACKET:提供连续可靠的数据包连接。
?? SOCK_RAW:提供原始网络协议存取。
?? SOCK_RDM:提供可靠的数据包连接。
?? SOCK_PACKET:与网络驱动程序直接通信。
protocol 用来指定socket 所使用的传输协议编号。这一参数通常不具体设置,一般设置为0 即可。
如果建立套接字成功,则返回这个套接字的编号。如果不成功,则返回-1。这个函数可
能发生的错误如下所示。
?? EPROTONOSUPPORT:参数domain 指定的类型不支持参数type 或protocol 指定的
协议。
?? ENFILE:核心内存不足,无法建立新的socket 结构。
?? EMFILE:进程文件表溢出,无法再建立新的套接字。
?? EACCESS :权限不足,无法建立type 或protocol 指定的协议。
?? ENOBUFS、ENOMEM:内存不足。
?? EINVAL:参数不合法。
例子:
#includesys/types.h
#includesys/socket.h
#includestdio.h /*包含头文件。*/
int main()
{
int s;
if((s = socket(AF_INET,SOCK_STREAM,0))0) /*建立一个套接字。*/
{
perror(connect); /*输出错误信息。*/
exit(1); /*出错则退出程序。*/
}
else /*成功则输出相关信息。*/
{
printf(a socket was created.\n);
printf(socket number:%d\n,s);
}
if((s = socket(AF_INET,123,0))0) /*用错误的参数建立一个套接字。*/
{
perror(connect); /*输出错误信息。*/
exit(1);
}
else /*建立成功的情况。*/
{
printf(a socket was created.\n);
printf(socket number:%d\n,s);
}
}
函数getsockopt 可以取得一个socket 的参数
int getsockopt(int s,int level,int optname,void* optval,socklen_t* optlen);
在参数列表中,s 表示已经建立socket 的编号,level 代表需要设置的网络层,一般设成
SOL_SOCKET 来表示socket 层,参数optname 表示需要获取的选项,
函数setsockopt 可以设置一个socket 的状态,这个函数的使用方法如下所示。
int setsockopt(int s,int level,int optname,const void * optval,socklent *optlen);
在参数列表中,s 表示已经打开的socket。参数level 代表欲设置的网络层,一般设成
SOL_SOCKET 以存取socket 层
原创力文档


文档评论(0)