博文

微软ping程序源代码完整版(附详细的注释)(2006-08-23 17:03:00)

摘要:        作者:侯志江     单位:天津大学软件学院        E-mail :tjuhzjemail@yahoo.com.cn   日期:2005年1月1日      内容简介: 编写自己的一个ping程序,可以说是许多人迈出网络编程的第一步吧!!这个ping 程序的源代码经过我的修改和调试,基本上可以取代windows中自带的ping程序. 各个模块 后都有我的详细注释和修改日志,希望能够对大家的学习有所帮助!!/* 本程序的主要源代码来自MSDN网站, 笔者只是做了一些改进和注释! 另外需要注意 的是在Build之前,必须加入ws2_32.lib库文件,否则会提示"error LNK2001:"的错误!*/ Version 1.1 修改记录:     <1> 解决了socket阻塞的问题,从而能够正确地处理超时的请求!      <2> 增加了由用户控制发送ICMP包的数目的功能(即命令的第二个参数)     <3> 增加了对ping结果的统计功能.                                                        &n......

阅读全文(200) | 评论:0

基于完成端口的服务器端模型(转)(2006-08-22 13:53:00)

摘要:       Tag:完成端口    基于完成端口的服务器端模型   一:初始化套接字服务 WSAStartup() 二:创建完成端口 完成端口=CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,工作线程数量); 三:创建指定数量的工作线程,运行它们,并在GetQueuedCompletionStatus调用中等待。 CreateThread(NULL,0,WorkThread,this,0,NULL); 四:创建监听套接字 监听套接字=WSASocket(AF_INET,SOCK_STREAM,0, NULL,0,WSA_FLAG_OVERLAPPED) 五:绑定,监听 bind(监听套接字, (PSOCKADDR) &addr, sizeof(addr); listen(监听套接字, 10) 六:创建监听线程 CreateThread(NULL,0,OnAccept,this,0,&dwThreadId);     创建完成端口其实是建立I/O投递的队列     监听线程中把完成端口与当前的客户端会话套接字绑定,这样此客户端会话的I/O信息就可以通过此完成端口进入投递队列,与此同时各个工作线程一直在调用GetQueuedCompletionStatus获取队列中的完成状态,一旦队列中有I/O投递,则当前工作线程就处理它,处理完成后,重新调用返回循环,继续调用GetQueuedCompletionStatus,处理各个客户端的下个投递请求。     监听线程把完成端口与当前的客户端会话套接字绑定后,则返回继续监听下个客户端的连接请求。     监听线程流程伪代码   while(1) {    SOCKET 客户端会话套接字;    //堵塞调用,直到有客户连接上来  客户端会话套接字=WSAAccept(监听套接字, NULL, NULL, NULL, 0); //把......

阅读全文(3568) | 评论:1

对等网络(P2P)的研究与进展 改变因特网的技术(转)(2006-08-22 13:02:00)

摘要:  http://www.ppcn.net/n2276c38.aspx 对等网络(P2P)被美国《财富》杂志称为改变因特网发展的四大新技术之一,甚至被认为是无线宽带互联网的未来技术。   P2P技术不仅为个人用户提供了前所未有的自由和便利,同时也试图有效地整合互联网的潜在资源,将基于网页的互联网转变成动态存取、自由交互的海量信息网络。     P2P技术的发展以及P2P与网格技术的结合,将影响整个计算机网络的概念和人们的信息获取模式,真正实现“网络就是计算机,计算机就是网络”的梦想。   作为改变现有Internet应用模式的主要技术之一,计算机对等网络(P2P)是目前新一代互联网技术研究的热点之一。  自1999年以来,P2P的研究得到了国内外学术界和商业组织的广泛关注,同时,由于P2P本质特性不可避免地存在着许多社会、法律和技术上的问题,在学术界和产业界也一直存在着一些怀疑的力量,这在很长一段时期使人们难以对P2P做出一个准确和公平的判断。  本文较为完整地分析了P2P网络的4种典型结构,并对P2P的主要应用模式、存在的问题以及可能的发展方向进行简要阐述。1 P2P网络模型  P2P网络是一种具有较高扩展性的分布式系统结构,其对等概念是指网络中的物理节点在逻辑上具有相同的地位,而并非处理能力的对等。以Napster软件为代表的P2P技术其实质在于将互联网的集中管理模式引向分散管理模式,将内容从中央单一节点引向网络的边缘,从而充分利用互联网中众多终端节点所蕴涵的处理能力和潜在资源。相对于传统的集中式客户/服务器(C/S)模型,P2P弱化了服务器的概念,系统中的各个节点不再区分服务器和客户端的角色关系,每个节点既可请求服务,也可提供服务,节点之间可以直接交换资源和服务而不必通过服务器。  P2P系统最大的特点就是用户之间直接共享资源,其核心技术就是分布式对象的定位机制,这也是提高网络可扩展性、解决网络带宽被吞噬的关键所在。迄今为止,P2P网络已经历了三代不同网络模型,各种模型各有优缺点,有的还存在着本身难以克服的缺陷,因此在目前P2P技术还远未成熟的阶段,各种网络结构依然能够共存,甚至呈现相互借鉴的形式。1.1 集中目录式结构  集中目录式P2P结构是最早出现的P2P应用模式,因为仍然具有中心化的特点也被称为非纯粹的P2P结构。......

阅读全文(2890) | 评论:0

科技改变人类生活 27种划时代技术回顾 P2P名列(转)(2006-08-22 13:01:00)

摘要:    http://www.ppcn.net/n2471c39.aspx 技术发展的脚步从未停息,在过去的数年里,我们已见证了无数次新技术诞生那激动人心的时刻。最初看似异想天开的想法,现在却成了生活中不可缺少的一部分,而在现有技术的基础上,越来越多的新应用方式也逐渐涌现出来。在性能稳步攀升的同时,价钱却令人欣喜地垂直下落,使得那些曾经几近奢侈的产品如今也可以为大众所享受。     下文便是关于这些已经改变或在未来将要改变人们生活的创新技术。在这27个最具代表性的技术中,有的已经成为市场的主宰者,被大众广泛接受并应用;而另一部分方兴未艾的技术,一旦当它们成为主流,对生活产生的影响也是不可小视的。   这样的例子不胜枚举,但经过一番细致的讨论,我们决定将内容精简到下文中的27个技术。当然,每位读者都会有自己的标准,对于我们罗列的技术,你也许并不能完全赞同,也许对你来说意义重大的技术却未能入选我们的列表,在这里,欢迎各位读者和我们联络,与我们分享你的想法。   下文所有提及的技术(前三个除外)并非按照重要性排序,特此说明。   IBM 个人电脑   1981年,第一台IBM PC问世了。有趣的是,在IBM PC 5150 发布的那个时代,它并不是世界上唯一的“个人”电脑,早在IBM 之前,Apple、Atari 、Commodore 和Tandy/Radio Shack 已经推出了面向个人用户的计算产品。而5150则是IBM 进军个人计算设备市场的一枚重要棋子。   1980年,IBM 与Bill Gates进行了首次会谈,商讨的重点在于IBM PC所采用的操作系统—MS-DOS.IBM的第一台PC配置了4.77MHz 处理器—当时的速度之最—16KB内存以及一到两个软盘驱动器,并配有一台单色显示器。当时,这台计算机的售价为1545美元—相当于现在的4000美元左右。尽管在当时这台PC的售价偏高,可用的应用程序也少得可怜,但IBM 还是在几个月内就售出了13000 台。鉴于IBM 在市场上的出色表现,时代杂志为这台里程碑式的PC授予了1982年“年度人物”的称号。预计在今年,全球共会售出近两亿台IBM PC.   E-mail   谁说皇室成员和现在的年轻人之间有代沟?1976年,英国女皇就曾经发过一封电......

阅读全文(2640) | 评论:0