用Perl语言进行Socket编程.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文档。上传文档
查看更多
用Perl语言进行Socket编程 网络编程是一门神秘且复杂的艺术,当然也十分有趣。Perl语言提供了丰富的TCP/IP网络函数,所有这些函数都直接来源于C语言的socket库函数. 由于Perl语言和C语言的socket库函数在型式和使用方法上都是一样的,因此会使用Perl语言进行Socket编程, 当然也就会使用C语言进行Socket编程. 下面是Perl语言中有关的socket库函数列表: 一。函数原型 使用说明 socket() socket()系统调用为客户机或服务器创建一个套接字,套接字函数在如下定义: #includesys/types.h #includesys/socket.h int socket(int family, int type, int protocol) Linux中family=AF_UNIX.type可以是SOCK_STREAM它是可靠的虽然通讯速度 ,也可SOCK_DGRAM它通讯速度较快但不可靠.如果type=SOCK_STREAM那么protocol=IPPROTO_TCP.如果type=SOCK_DGRAM那么protocol=IPPROTO_UDP. ,函数将返回-1.否则返回一个套接字描述符你可以在程序后面的调用 . 套接字创建时没有指定名字.客户机用套接字的名字读写它.这就是如下绑定函 . listen() listen()系统调用被服务器所使用.下面有它的定义: #includesys/types.h #includesys/socket.h int listen(int sockfd, int backlog); sockfd是套接字描述符.backlog是在一时间内尚未被决定是否拒绝的连接的号 .一般5.如发生错误则返回值小于1. ,你就已经可以接受连接了.setsockopt()和getsockopt()Linux所提供的socket库含有一个错误(bug).此错误表现为你不能为一个套接 ,即使在你正常关闭该套接字以后.例如,比方说,你编写一个服务 .服务器打开套接字并在其上侦听是没有问题的.无论如何,总 (不管是正常还是非正常的结束程序)使你的程序需要重新启动.然而重启动后你 .从bind()系统调用返回的错误代码总是报告说你试图 . 问题就是Linux内核在一个绑定套接字的进程结束后从不把端口标记为未用.在 UNIX系统中,端口可以被一个进程重复使用,甚至可以被其它进程使用. Linux中绕开这个问题的办法是,但套接字已经打开但尚未有连接的时候用s etsockopt()系统调用在其上设定选项(options).setsockopt()调用设置选项而getsockopt ()从给定. 这里是这些调用的语法: #includesys/types.h #includesys/socket.h int getsockopt(int sockfd, int level, int name, char *value, int *optlen) int setsockopt(int sockfd, int level, int name, char *value, int *optlen) sockfd必须是一个已打开的套接字.level是函数所使用的协议标准(protocol level)(TCP/IP协议使用IPPROTO_TCP,套接字标准的选项实用SOL_SOCKET),选项的名称(name)在套接(man page)有详细说明.*value指向为getsockopt()函数所获取的值或setsockopt()函数所设置的值的地址.optlen指针指向一个整数,该整数包含参数以字节计. 其值被getsockopt()设置且其值必须被程序员设定当使用一个经由setsockopt(). setsockopt的第二节(setsockopt(2))找到. Linux的错误上来.当你打开一个套接字时必须同时用下面的代 setsockopt()函数: #ifdef LINUX opt = 1; len = sizeof(opt); setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,opt,len); #endif Linux系统下使用时,#ifdef和#endif描述才是必须 .有些UNIX系统可能不支持或不需要SO_REUSEADDR标志.sendto() recvfrom() recvfrom()系统调用是这样定义的: #include sys/types.h #include sys/socket.h int recvfrom(int sockfd, const v

文档评论(0)

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

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档