资源描述:
《用perl语言进行socket编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用Perl语言进行Socket编程网络编程是一门神秘且复杂的艺术,当然也十分有趣。Perl语言提供了丰富的TCP/IP网络函数,所有这些函数都直接来源于C语言的socket库函数.由于Perl语言和C语言的socket库函数在型式和使用方法上都是一样的,因此会使用Perl语言进行Socket编程,当然也就会使用C语言进行Socket编程.下面是Perl语言中有关的socket库函数列表:一。函数原型使用说明socket()socket()系统调用为客户机或服务器创建一个套接字,套接字函数在如下定义:#include#in
2、cludeintsocket(intfamily,inttype,intprotocol)在Linux中family=AF_UNIX.type可以是SOCK_STREAM它是可靠的虽然通讯速度较慢,也可以是SOCK_DGRAM它通讯速度较快但不可靠.如果type=SOCK_STREAM那么protocol=IPPROTO_TCP.如果type=SOCK_DGRAM那么protocol=IPPROTO_UDP.如果出错,函数将返回-1.否则返回一个套接字描述符你可以在程序后面的调用中通过套接字描述符使用这个套接字.套接字
3、创建时没有指定名字.客户机用套接字的名字读写它.这就是如下绑定函数所要做之事.listen()listen()系统调用被服务器所使用.下面有它的定义:#include#includeintlisten(intsockfd,intbacklog);sockfd是套接字描述符.backlog是在一时间内尚未被决定是否拒绝的连接的号码.一般使用标准值5.如发生错误则返回值小于1.如果这个调用成功,你就已经可以接受连接了.setsockopt()和getsockopt()Linux所提供的socket
4、库含有一个错误(bug).此错误表现为你不能为一个套接字重新启用同一个端口号,即使在你正常关闭该套接字以后.例如,比方说,你编写一个服务器在一个套接字上等待的程序.服务器打开套接字并在其上侦听是没有问题的.无论如何,总otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWe
5、stNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand有
6、一些原因(不管是正常还是非正常的结束程序)使你的程序需要重新启动.然而重启动后你就不能把它绑定在原来那个端口上了.从bind()系统调用返回的错误代码总是报告说你试图连接的端口已经被别的进程所绑定.问题就是Linux内核在一个绑定套接字的进程结束后从不把端口标记为未用.在大多数UNIX系统中,端口可以被一个进程重复使用,甚至可以被其它进程使用.在Linux中绕开这个问题的办法是,但套接字已经打开但尚未有连接的时候用setsockopt()系统调用在其上设定选项(options).setsockopt()调用设置选项而getsockopt()从给定
7、的套接字取得选项.这里是这些调用的语法:#include#includeintgetsockopt(intsockfd,intlevel,intname,char*value,int*optlen)intsetsockopt(intsockfd,intlevel,intname,char*value,int*optlen)sockfd必须是一个已打开的套接字.level是函数所使用的协议标准(protocollevel)(TCP/IP协议使用IPPROTO_TCP,套接字标准的选项实用SOL_
8、SOCKET),选项的名称(name)在套接字说明书中(manpage)有详细说明.*value指向为getsockopt()函数所获取