- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 第16讲 无连接的套接字通信 演讲人:马玉军 e-mail:jtclass@126.com 课程安排 socket套接字的建立、获取状态和状态设置 无连接的套接字通信工作流程、信息发送与接收 socket套接字的建立、获取状态和状态设置 所谓socket套接字,指的是在网络通信以前建立的通信接口。进行网络连接以前,需要向系统注册申请一个新的socket。然后使用这个socket进行网络连接。 提示:套接字=传输层协议+端口号+IP地址。 在进行网络连接以前,需要用socket函数向系申请一个通信端口。这个函数的使用方法如下所示。 01 int socket(int domain, int type, int protocol); 在参数表表中,domain 指定使用何种的地址类型。type参数的作用是设置通信的协议类型。参数protocol用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0即可。 在使用这个函数建立套接字以前,需要在程序的最前面包含下面的头文件。 01 #include sys/types.h 02 #include sys/socket.h socket套接字的建立、获取状态和状态设置 如果建立套接字成功,则返回这个套接字的编号。如果不成功,则返回-1。这个函数可能发生的错误与含义如下所示。 EPROTONOSUPPORT:参数domain指定的类型不支持参数type或protocol指定的协议 ENFILE:核心内存不足,无法建立新的socket结构 EMFILE:进程文件表溢出,无法再建立新的套接字。 EACCESS :权限不足,无法建立type或protocol指定的协议。 ENOBUFS、ENOMEM:内存不足。 EINVAL:参数不合法。 注意:只创建套接字无法进行正常的网络体系,要想和其它计算机通信还必须借助于其它函数将建立的套接字与IP地址和端口号联系起来。 socket套接字的建立、获取状态和状态设置 socket套接字的建立、获取状态和状态设置 取得socket状态:函数getsockopt可以取得一个socket的参数。这个函数的使用方法如下所示。 01 int getsockopt(int s,int level,int optname,void* optval,socklen_t* optlen); 在参数列表中,s是已经建立socket的编号。level代表需要设置的网络层,一般设成SOL_SOCKET来表示socket层。参数optname代码的是需要获取的选项,可以设置成下面这些值。 SO_DEBUG:打开或关闭排错模式。 SO_REUSEADDR:允许在bind函数中本地地址可重复使用。 SO_TYPE:返回socket形态。 SO_ERROR:返回socket已发生的错误原因。 SO_DONTROUTE:送出的数据包不要利用路由设备来传输。 SO_BROADCAST:使用广播方式传送。 SO_SNDBUF:设置送出的暂存区大小。 SO_RCVBUF:设置接收的暂存区大小。 SO_KEEPALIVE:定期确定连线是否已终止。 SO_OOBINLINE:当接收到OOB 数据时会马上送至标准输入设备。 SO_LINGER:确保数据可以安全可靠传送出去。 参数optval是取得的某个参数的返回值指针,程序的返回值会保存在这个指针指向的变量中。optlen是optval的内存长度。函数如果执行成功则返回0,反之返回-1。这个函数可能发生下面这些错误。 EBADF:参数s不是合法的socket代码。 ENOTSOCK:参数s为一打开文件的编号,而不是一个socket。 ENOPROTOOPT:参数optname指定的选项不正确。 EFAULT:参数optval指针指向的内存空间无法读取。 在使用这个函数以前,需要在程序中的最前面包含下面的头文件。 01 #includesys/types.h 02 #includesys/socket.h socket套接字的建立、获取状态和状态设置 socket套接字的建立、获取状态和状态设置 设置socket状态:函数setsockopt可以设置一个socket的状态,这个函数的使用方法如下所示。 01 int setsockopt(int s,int level,int optname,const void * optval,socklen_toptlen); 在参数列表中,s是已经打开的socket。参数level代表欲设置的网络层,一般设成SOL_SOCKET以存取socket层。参数optname、optval、toptle
文档评论(0)