冒险岛,青春不再见

from:http://blog.csdn.net/byxdaz/article/details/4496575

率先次接触冒险岛是在0陆年,那时刚转学到新的小学,由于总括机早已推广,班上的伙伴们一连时刻不停地研讨着电脑游戏。各色种种,泡泡堂、跑跑卡丁车……可是,有壹款是他们关系次数最多的————冒险岛。

三种互联网编制程序格局:

每当他们聊起冒险岛时,作者接二连三插不上话,像个好奇婴儿似的,问那问那。诸如:“那些事情最厉害?”“能人打人吗?”也许是问得多了,他们时常反问小编“干嘛不和大家壹道玩吧?”于是,我就像是此被她们拉入坑了。

ISAPI、CGI、WinInet、Winsock

0陆年的网速,以往想来根本不可能忍受,那时下载速度能保持在100Kb/s,小编已经颇感欣慰了,700mb的冒险岛最少花了自家多个小时才下载安装完。只怕第壹回玩大型娱乐感觉震撼,漫长的守候本人居然未有一丝烦躁,换到以往测度早就点了右上角的红叉了。

它们中间的分别:

登记账号猜测是持有岛民对那款游戏虐恋的开头,=-=那是率先次体会到,取个好听又能用的id真的好难啊。那已经使得“陈天乔XXX”那类恶搞id的数据暴增(hh,玩过的意中人你们懂的)。

1) ISAPI首如若支付基于浏览器客户端与劳动器端程序。功效比CGI方式高,而且也壮大了CGI未有的有个别效应。(基于TCP/IP模型中的应用层)

和现行不可同日而语,这时创立人物的底蕴属性是须要骰子来摇的。所以在一初叶你将要控制本人挑选什么事情,额,当然,那是本人废了贰个号才知道的。其实对马上的本人的话,那游戏光注册和开创人物就花去了漫漫的岁月,差一些产生了不玩的意念。

2) CGI首借使支付基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层)

然而,全体的满贯怨念都在签到bgm响起的时候未有了,灵动雀跃,却又闲适宁静,给本人一种站在草野高处俯瞰下方的既视感,那段bgm也成了自家乐乎云音乐收藏夹里的率先个藏品。

3) WinInet重假如开发客户端程序。(基于TCP/IP模型中的应用层)

骨子里壹进游戏,小编的电脑就卡了,因为那儿的冒险岛真的是人挤人,更何况新手还必须待在同三个频段,抢怪什么的正是见惯不惊,新手就多少个技术:扔蜗牛壳、强风步、治疗术。首要出口依然靠平砍,于是笔者猛加力量,其实最初本人想当个魔法师来着orz,一路踉跄靠着5级拿到的安全刮脸刀砍刀十级,作者坐船来到金牌银牌岛。接下来就遇上本人十多年岛惠民涯里最大的黑历史。

四) Winsock首如若依照socket来开发客户端与劳动器端程序。(基于TCP/IP模型中的各层)要想付出低层协议的主次的话就要理解商业事务的报文格式。

不错,我迷路了。o(╥﹏╥)o完全找不到怎么去战士的专职区——勇士部落,(ps:作者后来才掌握下船后1侧就有出租汽车车能够直接过去)于是自个儿不得不一张图一张图的走过去,路上不通晓被漂漂猪杀了稍稍次,那也是新兴自家在猪的海岸疯狂报复的案由,嘿嘿。一路死到了魔法密林,小编看齐标牌上写着港口,兴冲冲的钻进了去,卖掉身上唯1壹件打到的武装,攒够钱买了船票,以为这么就能到勇士部落。

 

只是,做了十多分钟的船后,迎接自身的地点是“天空之城”,然后,就从不然后了,身上一毛钱都未有,买不起回来的船票,那多少个号默默地就被自身放弃在了天空之城,直到作者新建了二个魔法师号等级高了,才过去解救了她。

网络基础知识:

战士之路断绝后,从此便成了1个酒池肉林的魔术师。练级,刷怪,做组成代表队职务(各位岛民,还记得25级后再抛弃都市下水管道口求组的黑历史呢?),好友栏里的情人逐步多了4起,身上的配备也伊始有了逼格,各类酷炫的技术二个接二个。尽管那时的冒险岛晋级和脱肛一样,但本身却迷恋。

网络硬件

上了初级中学之后,玩的年华便开首稳步收缩,等级也卡在了65级,小编的小牧师就实际升不动了,未有到位三转的靶子。后来冒险岛经历了出新饭碗、出新鸿基土地资金财产图、大灾变等等,小编也是纯属续续回归、弃岛、再回归、再弃岛,陆陆续续玩到学院。

数据通信原理
(详见http://download.csdn.net/source/1196517)

虽说之后接触到了成千成万新的网络游戏,但却尚未1款能有当年玩冒险岛时的情绪,那种纯粹的笑容可掬,即便不打怪,不升级,哪怕上线和爱人聊聊天,坐船去碰碰蝙蝠魔,漫无目标地走遍全岛去听各样分裂的bgm,恐怕唯有少时才会如此“中二”吧。

OSI7层互连网模型与TCP/IP肆层互联网模型
(详见http://bbs.51cto.com/topic/thread-396621.html

那时候听到冒险岛二要公测的时候,沉积许久的Haoqing又点火了肆起,平昔关心着进程,从腾讯代办,三次内测,到不删档公测,激动的本身第临时间花钱买了测试账号登录游戏。Bgm仍旧照样的耳熟能详,只是那游戏却不再是从前的冒险岛了,玩了没多长期作者就淡出了娱乐,转而开辟了旧的冒险岛,在手无寸铁的冒险岛里到处转悠,像是告别,又像是在查找当初的融洽。

网络原理和商谈
(详见http://www.cnpaf.net/

就如拥有魔兽玩家说的那么,“你们只是多了多个嬉戏,而大家多了多个世界。”那话放到全数冒险岛岛民身上壹样适合,只不过,比较起世界观宏大的魔兽,冒险岛则更像是三个温和的家。只要那熟悉的记名bgm响起,曾经的岛民都会甘休脚步驻足,想起自身早就的欢声笑语,感慨时光流转。

Winsock

那十多年,谢谢您了。

 


网络编制程序:

本身将登录时的bgm链接附上,需求的青年伴自取哦,冒险岛登录bgm

提出,把机械工业出版社出的《Windows网络编制程序技术》看N遍后,再使用MFC恐怕SDK编写一些小的通信例程,然后编写较大局面包车型大巴网络程序,最终你就掌握了网络编制程序了!

 

《Windows互联网编制程序技术》专门探究Windows互联网编制程序技术,覆盖Windows 95/98/NT 4/三千/CE平台。内容包含NetBIOS和Windows重定向器方法、Winsock方法、客户端远程访问服务器方法。本书论述深刻浅出、用大方实例详解了微软互联网API函数的利用。

《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的次第协议以及它们如何在分歧操作系统中运维。

《互连网通信编制程序实用案例精选》是1本介绍利用vlsuaIC++举行网络通讯程序支付的书籍。书中甄选了大气网络实例,涵盖了位置汁算机互联网编制程序、局域网网络通讯编制程序、IE编制程序、互联网通讯协议编制程序、串口通讯编制程序、代理服务器编制程序和高等互连网通讯编程.

瑞鹰FC文书档案目录:http://oss.org.cn/man/develop/rfc/default.htm

ACE:ACE自适配通讯环境(ADAPTIVE  
Communication  
Environment)是足以随便使用、开放源码的面向对象框架,在其间落到实处了很多用以并发通信软件的基本形式。ACE提供了一组丰盛的可复用C++  Wrapper
 
Facade(包装外观)和框架组件,可当先多样平台形成大面积的通信软件职责,在那之中包涵:事件多路分别和事件处理器分派、实信号处理、服务开始化、进度间通讯、共享内部存款和储蓄器管理、新闻路由、分布式服务动态(重)配置、并发执行和同步,等等。ACE资料参考:http://docs.huihoo.com/ace_tao/index.html

建议在http://www.codeproject.com/http://www.codeguru.com/网址上找些老外写的网络代码研究研商,最棒能插足实际的网络项目,那样能见识越来越多成熟的网络类库。最好能到庭实际的互连网项目,那样能见识越来越多成熟的互连网类库。  

 开源互联网封装库
:
ACE,ICE,asio,cppsocket,netclass,poco,SimpleSocket,socketman,Sockets
开源下载工具
fdm, eMulePlus,eMule
开源FTP
FileZilla
开源服务器
Apache
网页游戏服务器开源框架
GNE,HawkNL,RakNet,SDL_net

 

互联网协议分析软件:

Sniffer工具

Wireshark
开源的经典的协议分析工具Wireshark,
http://www.wireshark.org/

WPE
——-抓包

Ethereal 
——-协议分析
SockMon五  ——-抓包及错误分析

 

Windows互连网编制程序细节难点:
    1.
假设在已经处在
ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立时关闭而经验TIME_WAIT的经过)后想继承起用该socket:

    BOOL
bReuseaddr=TRUE;

  setsockopt(s,SOL_SOCKET
,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof

(BOOL));

    贰.
假诺要已经处在连接情状的soket在调用closesocket后恐吓关闭,不经历TIME_WAIT的过程:

    BOOL
bDontLinger = FALSE;

   
setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const
char*)&bDontLinger,sizeof(BOOL));

   
3.在send(),recv()进度中有时候由于网络情形等原因,发收不能够预期进行,而设置收发时间限制:

  int
nNetTimeout=1000;//1秒

  //发送时限

  setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char
*)&nNetTimeout,sizeof(int));

  //接收时间限制

  setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char
*)&nNetTimeout,sizeof(int));

   
四.在send()的时候,再次来到的是实际上发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统私下认可的情景发送和选择一遍为868⑧字节(约为8.5K);在事实上的长河中发送数据和吸纳数据量相比大,能够安装socket缓冲区,而幸免了send(),recv()不断的巡回收发:

  //
接收缓冲区

  int
nRecvBuf=32*1024;//设置为32K

  setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const
char*)&nRecvBuf,sizeof(int));

  //发送缓冲区

  int
nSendBuf=32*1024;//设置为32K

  setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const
char*)&nSendBuf,sizeof(int));

  5.
1旦在发送数据的时,希望不经历由系统缓冲区到socket缓冲区的正片而影响程序的性质:

  int
nZero=0;

  setsockopt(socket,SOL_S0CKET,SO_SNDBUF,(char
*)&nZero,sizeof(nZero));

  6.同上在recv()完结上述意义(暗许景况是将socket缓冲区的始末拷贝到系统缓冲区):

  int
nZero=0;

  setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char
*)&nZero,sizeof(int));

  七.一般在发送UDP数据报的时候,希望该socket发送的数量具有广播个性:

  BOOL
bBroadcast=TRUE;

  setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const
char*)&bBroadcast,sizeof(BOOL));

  八.在client连接服务器进程中,假若处在非阻塞情势下的socket在connect()的长河中能够安装connect()延时,直到accpet()被呼叫(本函数设置只有在非阻塞的进度中有醒指标效能,在堵塞的函数调用中成效非常小)

  BOOL
bConditionalAccept=TRUE;

  setsockopt(s,SOL_SOCKET,SO_CONDITIONAL_ACCEPT,(const
char*)

&bConditionalAccept,sizeof(BOOL));

  玖.固然在发送数据的进程中(send()未有达成,还有数据没发送)而调用了closesocket(),从前作者们一般选用的方法是”从容关闭”shutdown(s,SD_BOTH),不过数量是任其自流丢失了,怎么着设置让程序知足现实使用的须求(即让没发完的数目发送出去后在闭馆socket)?

  struct
linger {

  u_short
l_onoff;

  u_short
l_linger;

  };

  linger
m_sLinger;

  m_sLinger.l_onoff=壹;//(在closesocket()调用,然则还有数量没发送完成的时候或然逗留)

  //
如果m_sLinger.l_onoff=0;则效果和B)成效一样;

  m_sLinger.l_linger=5;//(容许逗留的时光为五秒)

  setsockopt(s,SOL_SOCKET,SO_LINGER,(const
char*)&m_sLinger,sizeof

(linger));

  注意点:

     
A.在设置了逗留延时,用于2个非阻塞的socket是效益十分的小的,最棒不用;

  B.若是想要程序不经历SO_LINGER须求安装SO_DONTLINGE大切诺基,也许设置l_onoff=0;

  10.多少个用的可比少的是在SDI或许是Dialog的顺序中,能够记录socket的调节和测试新闻:

  BOOL
bDebug=TRUE;

  setsockopt(s,SOL_SOCKET,SO_DEBUG,(const
char*)&bDebug,sizeof(BOOL));

  11.屡屡因而setsockopt()设置了缓冲区大小,但还不能够满意数码的传输供给,壹般习惯是和谐写个处理网络缓冲的类,动态分配内部存款和储蓄器。

    12、#include <Afxsock.h>,#include<winsock二.h>争论问题

消除措施:在StdAfx.h
头文件中添加winsock2.h,Afxsock.h

先#include
<winsock2.h> 再#include <Afxsock.h>

    一三、获取数据包,壹般的话想获取数据包能够动用IP_HDRINCL选项,但是在Windows 2000/XP中setsockopt()中IP_HDHavalINCL是个违规的选项,可是足以应用 WSAIoctl() 函数调用SIO_逍客CVALL捕获IP数据包。简单步骤如下:
1)、Create a raw socket.
2)、Bind the socket to the local IP over which the
traffic is to be sniffed.
3)、WSAIoctl() the socket with SIO_RCVALL to give it
sniffing powers.
4)、Put the socket in an infinite loop of recvfrom.
5)、n’ joy! the Buffer from recvfrom.

    1四、IP、TCP、UDP、ICMP数据包格式
/*The IP
header */
typedef struct tagIPHEADER{
 unsigned char version:4;
 unsigned char header_len:4;
 unsigned char tos;
 unsigned short total_len;
 unsigned short ident;
 unsigned short flags;
 unsigned char ttl;
 unsigned char proto;
 unsigned short checksum;
 unsigned int sourceIP;
 unsigned int destIP;
}IPHEADER;

struct
TCPPacketHead{
 WORD SourPort;
 WORD DestPort;
 DWORD SeqNo;
 DWORD AckNo;
 BYTE HLen;
 BYTE Flag;
 WORD WndSize;
 WORD ChkSum;
 WORD UrgPtr;
};

struct
ICMPPacketHead {
 BYTE Type;
 BYTE Code;
 WORD ChkSum;
};

struct
UDPPacketHead {
 WORD SourPort;
 WORD DestPort;
 WORD Len;
 WORD ChkSum;
};

 

    一5、二种winsock
I/O模型相比:
select模型主旨正是select函数,它可用来判断套接字上是不是留存多少,只怕是或不是向3个套接字写入数据。这一个函数能够有效地幸免应用程序在套接字处于阻塞形式中时,send或recv进入阻塞状态;同时也足以预防产生大批量的WSAEWOULDBLOCK错误select的优势是能够从单个线程的两个套接字上开始展览多重连接及I/O。

WSAAsyncSelect
模型是以音信机制为底蕴,能够处理肯定的客户连接量,可是扩充性也不是很好。因为音信泵相当慢就会阻塞,下降了信息处理的快慢。WSAAsyncSelect和WSA伊夫ntSelect模型提供了读写多少能力的异步通告,但她俩不提供异步数据传送,而重叠及完毕端口提供异步数据的传递。

WSA伊夫ntSelect
模型以时间为根基的网络事件通报,不过与WSAAsyncSelect不一样的是,它至关心重视尽管由事件目的句柄完毕的,而不是通过窗口。不过二个线程只可以等待610个事件(必要开辟五个线程消除),伸缩性不及达成端口。

臃肿模型能够使程序能达到规定的标准更佳的种类质量。基本布置原理正是让应用程序使用重叠的数据结构,3回投递二个或多个I/O请求。针对这么些付出的乞求,在他们成就之后,应用程序可为他们提供劳务。它又分为二种达成格局:事件通报和成功例程。重叠I/O模型事件通报正视于等待事件通报的线程数(WSAWaitForMultiple伊芙nts调用的各类线程,该I/O模型三回最多都只可以支持陆13个套接字。),处理客户通讯时,大批量线程上下文的切换是它们一起的掣肘因素。

姣好端口提供了最佳的伸缩性,往往能够使系统达到最佳的特性,是拍卖不胜枚举的套接字的首要采纳。从实质上说,实现端口模型供给创制贰个windows达成端口对象,该对象通过点名数量的线程,对重叠I/O请求实行管制,以便为已经完结的重叠I/O请求提供服务。但是形成端口只是支撑NT系统、WIN两千系统。

臃肿模型和到位端口模型的应用程序通告缓冲区收发系统一向行使数据,也正是说,借使应用程序投递了二个十KB大小的缓冲区来接收数据,且数据现已抵达套接字,则该多中将直接被拷贝到投递的缓冲区。
而select模型、WSAAsyncSelect 模型、WSA伊芙ntSelect
模型,数据到达并拷贝到单套接字接收缓冲区中,此时应用程序会被告知能够读入的体量。当应用程序调用接收函数之后,数据才从单套接字缓冲区拷贝到应用程序的缓冲区,差异就展现出来了。

 

   
1陆、服务器与客户端IO模型采纳

对此怎么选取最适合本人应用程序的I/O模型已经很鲜明了。同开发一个简易的运营10二线程的锁定方式采取相比较,别的每一个I/O模型都急需更为复杂的编制程序工作。因此,针对客户机和服务器应用开发模型的抉择,有以下标准。

1).
客户端

若打算开发二个客户机应用,令其同时管理二个或四个套接字,那么建议利用重叠I/O或WSA伊夫ntSelect模型

,以便在早晚水准上晋级质量。但是,假使开发的是多个以Windows为根基的应用程序,要进行窗口语资源新闻息的军管,那么WSAAsyncSelect模型恐怕是1种最棒的选料,因为WSAAsyncSelect自己就是从Windows消息模型借鉴来的。选用那种模型,程序需具备音信处理功效。

二).
服务器端

若支付的是1个服务器应用,要在一个加以的时间,同时决定多少个套接字,提议利用重叠I/O模型,那同1是从质量角度酌量的。不过,假如服务器在别的给定的日子,都会为大气I/O请求提供劳动,便应思量使用I/O完结端口模型,从而获取更佳的性质。

    17、shutdown、closesocket区别

shutdown 从容关闭,为了保险通讯两方都尚可应用程序发出的兼具数据,1个合格的应用程序的做法是通报接受双发都不在发送数据!这正是所谓的“平常关闭”套接字的点子,而这么些艺术就是由shutdown函数,传递给它的参数有SD_RECEIVE,SD_SEND,SD_BOTH三种,如果是SD_RECEIVE就表示区别意再对此套接字调用接受函数。那对于协议层未有影响,其余对于tcp套接字来说,无论数额是在伺机接受恐怕即将抵达,都要重置连接(注意对于udp协议以来,依旧接受并排列传入的数量,由此udp套接字而言shutdown毫无意义)。如若采取SE_SEND,则意味不允许再调用发送函数。对于tcp套接字来说,那表示会在富有数据发送出并取得接受端确认后发出三个FIN包。假诺内定SD_BOTH,答案昭昭。  

closesocket
正式关闭,关闭连接,释放具有有关的财富。因为无连接协议未有连接,所以不会有正式关闭和从容关闭,直接调用closesocket函数。

   
1八、TCP链接3回握手、终止链接六遍握手

图片 1

 

图片 2

 

    19、getpeername 、getsockname

getpeername 函数用于获取通讯方的套接字地址新闻,该新闻上关于已建立连接的拾叁分套接字的。
getsockname 函数是getpeername的对应函数。它回到的是内定套接字的地头接口的地点音讯。

   
20、MFC下CSocket编制程序注意事项

一)、在利用MFC编写socket程序时,必须求含有<afxsock.h>都文件。
2)、AfxSocketInit()
那么些函数,在选取CSocket前早晚要先调用该函数,不然使用CSocket会出错。
三)、CSocket::Create 的接口便是, 实现上还推行了 CSocket::Bind ,
极度不简单被发觉。假若是以 Create
方法起首化的前提下无法再调用 Bind
,要不肯定出错。1般写服务器程序都休想用Create 为好,用下边包车型客车

CSocket::Socket
起始化然后Bind。

    2一、winsock  
有多少个分裂的版本

winsock  
有多个例外的版本,第贰版很old了,win玖伍一代的,win贰仟后另眼相待第一版winsock  
贰,   出了主板本号外,还有子版本号,那些职能上不尽一致,winsock二  
帮衬原始套接字编制程序,   MFC   还包裹了winsock,使用WINSOCK.h  
要用到WSOCK3二.LIB,  
还有1些恢宏api功效,供给MSWSOCK.h   MSWSOCK.DLL  。
以后winsock.h   winsock二.h  
都用ws2_32.lib。

   22、sockaddr_in , sockaddr ,
in_addr区别
struct   sockaddr   { 
                unsigned   short   sa_family;    
                char   sa_data[14];    
        }; 
  下边是通用的socket地址,具体到Internet  
socket,用上边包车型大巴结构,二者能够开始展览项目转换 
        
  struct   sockaddr_in   { 
                short   int   sin_family;    
                unsigned   short   int   sin_port;    
                struct   in_addr   sin_addr;    
                unsigned   char   sin_zero[8];    
        }; 
        struct   in_addr就是32位IP地址。 
        struct   in_addr   { 
                union {
                        struct { u_char s_b1,s_b2,s_b3,s_b4; }
S_un_b;
                        struct { u_short s_w1,s_w2; } S_un_w;
                        u_long S_addr;
                } S_un;

                #define s_addr 
S_un.S_addr
        }; 
  
inet_addr()是将一个点分制的IP地址(如1九2.16八.0.一)转换为上述协会中需求的三十几个人IP地址(0xC0A70001)。

填值的时候使用sockaddr_in结构,而作为函数(如socket,
listen,
bind等)的参数传入的时候转换到sockaddr结构就行了,毕竟都以14个字符长。

常备的用法是: 
  int   sockfd; 
  struct   sockaddr_in   my_addr; 
  sockfd   =   socket(AF_INET,   SOCK_STREAM,   0);    
  
  my_addr.sin_family   =   AF_INET;    
  my_addr.sin_port   =   htons(MYPORT);    
  my_addr.sin_addr.s_addr   =   inet_addr(“192.168.0.1”); 
  
  bzero(&(my_addr.sin_zero),   8);    
   
  bind(sockfd,   (struct   sockaddr   *)&my_addr,   sizeof(struct  
sockaddr));
因此可见你是要实行网络编制程序,使用socket, listen,
bind等函数。你只要记住,填值的时候使用sockaddr_in结构,而作为函数的参数字传送入的时候转换来sockaddr结构就行了,终归都是十五个字符长。 
   二3、几个奇特的地点

INADDR_LOOPBACK   (127.0.0.一)  
总是代表经过回环设备的本地主机;   INADDPRADO_ANY  

(0.0.0.0)  
表示别的可绑定的地方;   INADDLAND_BROADCAST   (255.25伍.255.25五)  
代表其他主机。
INADDR_ANY
的现实意思是,绑定到0.0.0.0。此时,对拥有的地点都将是实惠的,假诺系统一考式虑冗余,选用三个网卡的话,那么使用此种bind,将在富有网卡上拓展绑定。在那种情景下,你能够收到发送到全体有效地址上数据包。
例如:
SOCKADDR_IN Local;
Local.sin_addr.s_addr = htonl(INADDR_ANY);
除此以外一种格局如下:
SOCKADDR_IN Local;
hostent* thisHost = gethostbyname(“”);
char* ip = inet_ntoa(*(struct in_addr
*)*thisHost->h_addr_list);
Local.sin_addr.s_addr = inet_addr(ip);
在这种办法下,将在系统中当前先是个可用地址上海展览中心开绑定。在多网卡的环境下,大概会出难题。

  
2四、常见协议

FTP协议:http://blog.csdn.net/superman419/archive/2009/04/10/4063476.aspx
SMTP协议:http://www.cnpaf.net/class/smtp/
POP3协议:http://www.cnpaf.net/class/pop3/
http://www.yesky.com/20020305/1600243.shtml
ICMP协议:http://blog.csdn.net/byxdaz/archive/2007/08/01/1720971.aspx
RAS协议:http://blog.ixpub.net/html/94/10181094-31509.html
TAPI协议:http://blog.csdn.net/chszs/archive/2008/12/08/3475908.aspx
Telnet协议:http://www.cnblogs.com/liuweijian/archive/2005/09/12/235493.html
HTTP协议:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
代理协议socks:http://blog.csdn.net/byxdaz/archive/2010/03/31/5439291.aspx

 25、为啥须求htons(), ntohl(),
ntohs(),htons() 函数?
在C/C++写网络程序的时候,往往会遭逢字节的互联网顺序和主机顺序的难题。这是就恐怕用到htons(),
ntohl(), ntohs(),htons()那6个函数。

互连网字节顺序与本土字节顺序之间的转换函数:

      htonl()–“Host to Network Long”
      ntohl()–“Network to Host Long”
      htons()–“Host to Network Short”
      ntohs()–“Network to Host Short”
 

故此须求那一个函数是因为电脑数据表示存在三种字节顺序:NBO与HBO

互连网字节顺序NBO(Network Byte Order):
     
按从高到低的顺序存款和储蓄,在互连网上选取统一的网络字节顺序,可防止止包容性难点。

主机字节顺序(HBO,Host Byte Order):
     
分歧的机械HBO不一样,与CPU设计有关,数据的各样是由cpu决定的,而与操作系统非亲非故。
如 Intel   x86结构下,short型数0x1234表示为34   12,
int型数0x12345678表示为78   56   34   12  
如IBM   power PC结构下,short型数0x1234表示为12   34,
int型数0x12345678表示为12   34   56   78
是因为那么些缘故莫衷1是系统布局的机器之间不能通讯,所以要转换到一种约定的数序,也正是互连网字节顺序,其实就是仿佛power  
pc那样的顺序
。在PC开发中有ntohl和htonl函数能够用来开展互连网字节和主机字节的更换。

26、如何询问端口被占据的先后

咱们在起步服务器时,有时平日运营有时又开动不了是怎么回事呢??那干什么关掉迅雷等软件就又好了呢??未来就来给我们讲解一下,

 

图片 3

那个端口如若被别的程序占用就不能够健康运行,比如偶尔运转时会唤起WEB启动失利,其实就是80端口被挤占了,而迅雷等下载软件恰恰正是占据了80端口,关掉就行了。但偶尔迅雷等都尚未开也运行不了,那便是其他东西占用了,那咋做吧?作者来叫您查看端口并关闭的措施。
1.在初始–运营   里面输入cmd点回车,会油可是生运行窗口。
二.在提示符后输入netstat -ano回车,找到tcp 80端口对应的pid,比如14八四.
三.ctrl+alt+del开拓职务管理器,选进程,这里有众多正值运作的程序怎么找?别急点上边的  
查看–采用列–在PID(进度标示符)前边打钩。好了,上面包车型客车经过后面都有了PID号码。那时上一步找到的PID就有用了,找到1484,比如PEEHighlander.EXE什么的,截至进度吧。那时再开服务器,看WEB能够运行了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注