ASCE1885的网络编程
ACE1985
这个作者很懒,什么都没留下…
展开
-
《ASCE1885的网络编程》---IP数据报格式
IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。IP数据报的格式如下:注意,上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。由于TCP/IP协议头部中所有的二进制数在网络中传输时都要求以这种顺序进行,因此把它称为网原创 2010-07-15 20:04:00 · 2100 阅读 · 1 评论 -
《ASCE1885的网络编程》---Windows API基本函数の套接口与连接的建立
<br />1)打开Winsock---WSAStartup()<br />使用Winsock API编制的网络应用程序中,在调用任何一个Winsock函数之前,都必须检查协议栈的安装情况,也就是检查系统中是否有Windows Sockets的实现库。调用的是WSAStartup函数,详见:《Windows API巡礼》---WSAStartup和WSACleanup(http://blog.csdn.net/ACE1985/archive/2010/07/03/5710430.aspx)。<br /> <原创 2010-08-05 12:42:00 · 1633 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock API基本函数の数据传输
<br />在Winsock中,用于数据发送和接收的系统调用分为两组:一组是有连接的数据发送和接收系统调用;一组是无连接的数据发送和接收系统调用。这里我们先弄清与数据发送和接收关系密切的“带外数据”的概念。<br /> <br />1)带外数据概念:<br /> <br />有时我们可能要传输一些相对来说比较重要的数据,如果按普通数据进行传送,那么在传输过程中要受流量、拥挤等控制的影响。对于这些比普通数据重要的数据,在传输过程中可以标记为带外数据(Out-Of-Band,OOB)。<br />对于带外数据,原创 2010-08-04 17:29:00 · 1710 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock APIの套接口选项函数
<br />套接口在建立以后,可以通过设置套接口的属性对套接口的行为和操作进行控制,这就要使用套接口选项设置函数setsockopt()。也可以在套接口上进行操作前首先查看套接口属性的设置情况,这就要使用套接口选项获取函数getsockopt():<br />int setsockopt(<br /> __in SOCKET s, //指定一个有效的套接口<br /> __in int level, //套接口选项定义的级别,常用的有SOL_SOCKET、IPPROTO_IP和IPPROTO_TCP原创 2010-08-03 13:45:00 · 1516 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock APIの套接口I/O处理函数
<br />在Windows环境下,套接口的通信方式分为两种:阻塞方式和非阻塞方式。阻塞方式下工作的套接口在进行I/O操作时,函数要等待到相关操作完成以后才能返回;非阻塞方式下工作的套接口在进行I/O操作时,无论操作是否成功,调用都会立即返回。<br />阻塞方式和非阻塞方式各有优缺点,阻塞方式的套接口编程简单,易于实现。因此,一个套接口默认操作模式被设置为阻塞方式。如果要使套接口工作在非阻塞方式下,就要使用ioctlsocket()函数进行设置。阻塞方式的套接口在下面几种情况下显得难于管理:<br />1原创 2010-08-03 22:00:00 · 1882 阅读 · 0 评论 -
《ASCE1885的网络编程》の以太网接口堆栈
网络工作在通信协议上,现在非常普遍的是使用TCP/IP的以太局域网(Ethernet LAN)。在局域网中,计算机可以用同轴电缆、双绞线或光纤连接起来。现在大多数网络使用双绞线连接。以太网包含以下几层:1)介质访问控制(MAC)层以太网的最底层是硬件层,称为介质访问控制(Media Access Control)层。网卡属于该层,它包含了串行网络接口和一个控制器,控制器将原始数据转换成电子信号,并发送到正确位置。以太网接口的各层有不同的寻址方法,在最下面的MAC层,寻址是通过MAC号进行的。MAC号是一个4原创 2010-06-02 22:32:00 · 1704 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock APIの网络信息获取函数
<br />网络中的主机需要安装TCP/IP协议或其他协议才能进行通信,网络应用程序有时需要获取主机上或网络有关的信息,这些信息一般存放在数据文件中。如Unix系统中,主机名存放在/etc/hosts文件中,网络信息则存放在etc/networks文件中,因此这类获取主机上与网络有关的信息的函数也叫数据库函数。<br />与网络有关的信息主要分为4大类:<br />主机信息:函数名一般以gethostby开头,在程序中较多使用;<br />网络信息:函数名一般以getnetby开头,在程序中较少使用;<br原创 2010-07-24 15:26:00 · 1612 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock APIの字节排序函数
不同的计算机系统在存储由多个字节组成的信息时,有些系统将高序字节存放在低地址处,而有些系统则将低序字节存放在低地址处,即“大序在前”(Big-Endian)和“小序在前”(Little-Endian)。在计算机网络中,发送端在传输数据之前必须要将用主机字节Host-byte顺序表示的数据转化成网络字节Network-byte顺序,然后才能发送数据。在数据接收端,系统要把收到的网络字节顺序的数据转化为主机字节顺序的数据。在Winsock API中,专门有一类函数用来进行主机字节顺序和网络字节顺序数据的相互转化原创 2010-07-23 21:21:00 · 1564 阅读 · 0 评论 -
《ASCE1885的网络编程》---Winsock APIのIP地址转换函数
在进行网络程序设计时,常常需要从键盘上输入用点分十进制记法表示的主机IP地址,这种IP地址在程序中一般是用ASCII字符串的形式存储的。在网络程序中,要把这种用点分十进制字符串表示的IP地址转换为用网络字节顺序表示的IP地址。如果在程序中需要输出IP地址时,要把用二进制表示的网络字节顺序的IP地址转化为点分十进制形式表示的主机IP地址,用户才可以识别。在Winsock API中提供了这样的函数,这种函数以inet开头。1)点分十进制表示的IP地址转换为网络字节顺序的IP地址---inet_addr()Ine原创 2010-07-23 22:07:00 · 2302 阅读 · 0 评论 -
《ASCE1885的网络编程》---地址解析协议
<br />TCP/IP协议族分为四层,其中在数据链路层传输的数据帧只能识别网卡物理地址,常用的以太网就是48位的MAC地址。TCP/IP协议族专门设计了用于地址解析的协议ARP(Address Resolution Protocol),它可以把一个IP地址映射成对应的物理地址。另外,对于无法保存IP地址的主机(如无盘工作站),TCP/IP协议族也提供了从物理地址到IP地址映射的反向地址解析协议RARP(Reverse Address Resolution Protocol):<br /><br /><br原创 2010-07-15 22:14:00 · 1736 阅读 · 0 评论 -
《ASCE1885的网络编程》の套接字select模型
套接字Select模型使得Windows Sockets应用程序可以在同一时间内管理和控制多个套接字。该模型的核心是select()函数,在使用该函数时,还需要用到FD_SET、FD_ZERO、FD_ISSET和FD_CLR四个宏。套接字的select模型,能够使得Windows Sockets应用程序同时对多个套接字进行管理。调用select()函数检查当前各个套接字的当前状态。并且根据该函原创 2010-10-15 11:12:00 · 1979 阅读 · 0 评论