DOS下的网络编程2.docVIP

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

在DOS下进行网络编程(下) ??? 在上一篇中,我们为在DOS下进行网络编程做了大量的准备工作,我们在DJGPP下安装了WATT-32库,同时,配置好了网络环境,下面我们用一个实例来说明在DOS下进行网络编程的方法。 ??? 上一篇中,我们编译了WATT-32库中的一个范例程序ftpsrv.c,这是一个FTP服务器的范例程序,下面我们也编一个FTP服务器的程序,但我们有两点不同,第一,我们主要使用BSD网络编程的标准函数,这是一个UNIX下进行网络编程的规范,WATT-32库中实现了绝大多数的BSD编程函数,在《在DOS下进行网络编程(上)》中介绍了一篇文章《Beejs Guide to Network Programming Using internet Sockets》,这篇文章中介绍的编程方法也是基于这个规范,有关在这个规范下的函数介绍可以从下面这个网址下载,也可以参考UNIX下网络编程的书籍。 ??????? /Manual/BSDsocket.pdf ???? 下面继续我们的FTP服务器,要编写一个FTP服务器程序,首先要了解一下FTP协议,有关FTP协议的完整规范,可以在下面网址下载: ??????? /specification/rtfc765-ftp.pdf ??? 实际操作上并没有协议中那么复杂,况且我们的实例也并不想完成所有的协议,我们的实例计划完成下面的功能: 侦听FTP端口21(listen) 接受来自FTP客户端的连接请求(accept) 接受FTP客户端的登录,但并不对登录信息做验证 接受FTP客户端发来的退出(quit)命令,关闭连接(close) ??? 整个程序只接受一个FTP客户端的请求,当已经为一个FTP客户端提供服务时,如果有新的连接请求将不予理睬。 ??? 好我们现在可以开始了,以下是我们这个例子的源程序,为了说明方便,我们在前面加了行号。 ??? 01? #include stdio.h ??? 02? #include string.h ??? 03? #include sys/socket.h ??? 04? int FtpServer(int s); ??? 05? int main (void) { ??? 06? ? struct sockaddr_in my_addr;??? // my address information ??? 07? ? struct sockaddr_in their_addr; // connectors address information ??? 08? ? int??? sockfd, new_fd;???????? // listen on sockfd, new connection on new_fd ??? 09? ? int??? sin_size; ??? 10? ? int??? Loop; ??? 11? ? char?? tempStr[100]; ??? 12? ? if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { ??? 13? ??? printf(Socket Error!\n); ??? 14? ??? return 1; ??? 15? ? } ??? 16? ? my_addr.sin_family = AF_INET;???????? // host byte order ??? 17? ? my_addr.sin_port?? = htons(21);?????? // short, network byte order ??? 18? ? my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my IP ??? 19? ? memset(my_addr.sin_zero, 0, 8);????? // zero the rest of the struct ??? 20? ? if (bind(sockfd, (struct sockaddr *)my_addr, sizeof(struct sockaddr)) == -1) { ??? 21? ??? printf(Bind Error!\n); ??? 22? ??? return 1; ??? 23? ? } ??? 24? ? if (listen(sockfd, 5) == -1) { ??? 25? ??? printf(Listen Error!\n); ??? 26? ??? return 1; ??? 27? ? } ??? 28? ? new_fd?? = -1; ??? 29? ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档