1 / 30
文档名称:

网络编程.docx

格式:docx   大小:284KB   页数:30页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

网络编程.docx

上传人:mh900965 2018/3/3 文件大小:284 KB

下载得到文件列表

网络编程.docx

相关文档

文档介绍

文档介绍:第一章:
ISO/OSI 参考模型分层的优点
简化了网络复杂性;
分工明确;
易于实现技术的更新换代。
TCP三次握手
网络编程模型:
客户机/服务器模式(C/S模式)
这个模型包括三个部分:顾客、服务器和服务器提供的服务
服务器是一个为应用提供服务的计算机。它一直等待着客户的请求以便为客户提供服务操作。客户机向服务器提出服务要求,并等待传回服务的结果。
服务器可以根据服务的方式分为两类:重复服务器(iterative server)和并发服务器(concurrent server)
浏览器/服务器模式(B/S模式)
浏览器/服务器(B/S,Browser/Server)技术的兴起,对C/S结构的一种变化或者改进的结构。主要利用了不断成熟的种Script语言(VBScript、JavaScript等)和ActiveX技术,是一种全新的软件系统构造技术。在这种结构下,用户界面完全通过服务器端实现。
B/S结构是真正的三层结构,它以访问Web数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问Web服务器和与其相连的后台数据库,我们称之为B/S模式。
比较:
硬件环境:B/S是建立在广域网之上的,不必是专门的网络硬件环境;
安全要求:B/S是建立在广域网之上的,对安全的控制能力相对较弱,面向的是不可知的用户群。
程序架构:B/S对安全以及访问速度的多重考虑,建立在需要更加优化的基础之上。比C/S有更高的要求,B/S结构的程序架构是发展的趋势;
软件重用:B/S要求构件有相对独立的功能,能够被较好的重用。
系统维护:B/S构件组成方面,系统维护开销小。
处理问题:B/S建立在广域网上,面向不同的用户群,地域分散,这是C/S无法做到的;
用户接口:B/S建立在浏览器上, 有更加丰富和生动的表现方式与用户交流,并且大部分难度减小,降低开发成本。
安全性能:防火墙技术可以保证后台数据库的安全性;
socket接口被广泛认可并成为了事实上的工业标准。最早创造socket的是UNIX系统,Windows系统在UNIX的BSD基础上继承和发展了自己的socket,形成了Winsock。
第二章:
套接字是两个通信通道上的端节点。套接字函数可以用来产生通信信道,通过信道两个应用程序间可以传送数据。套接字是信道的末端,当应用程序产生一个套接字后,套接字函数就返回所用文件的描述符。
Linux支持一下套接字:
·UNIX UNIX域套接字
·INET 地址簇CP/IP协议支持通信
·IPX Novell IPX
·APPLETALK Appletalk DDP
·X25 X25
Linux的BSD 套接字支持下面的几种套接字类型:
流式(stream)
数据报(datagram)
原始(raw)
可靠递送消息(reliable delivered messages)
顺序数据包(sequenced packets)
数据包(packet)
套接字的特点:
(1) 套接字没有与它相连的设备文件。应用程序可以用scoket()产生套接字,指定所用的信道类型。scoket()返回与所用信道末端相适应的文件描述符。
(2) 只要进程保存文件描述符,套接字就一直存在,直到没有进程打开文件描述符为止,套接字才被撤消
(3) 可以产生一个套接字,也可以同时产生一对套接字。如果产生一对套接字,则操作系统会自动在它们之间建立信道。如果只产生一个套接字,则用户程序就需要用套接字函数在该套接字与其他套接字间建立信道
TCP/IP协议簇的套接字地址也可以采用如下结构:
#include< />
#include<sys/>
struct in_addr
{
_u32 s_addr;
/*  UINT类型*/
}
struct sockaddr_in
{
short int sin_family;
/* 地址类型:AF_XXX */
unsigned short int sin_port;
/* 端口号*/
struct in_addr sin_addr;
/*  地址*/
unsigned char sin_zero[8];
};
设置sockaddr_in类型的地址时,需要进行字符串形式的IP地址和二进制形式的地址间的转换
_aton功能相同,_addr已过时,_aton。_ntoa()把地址转换成数字和句点的形式:
a1 = inet_ntoa();
/* */
a2 = inet_n