udp82620专业文件.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

taotao0b + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档