c_网络编程_c_套接字编程.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c_网络编程_c_套接字编程.pdf》由会员分享,可在线阅读,更多相关《c_网络编程_c_套接字编程.pdf(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c_网络编程_c_套接字编程C#套接字编程主要内容.N E T 网络编程基本操作.同步通信开发-同步服务器开发-同步客户机开发.异步通信开发-异步服务器开发-异步客户机开发.TcpListener/TcpClient 通信开发.UDP通信1.概述.N E T 环境下的网络编程仍然是基于套接字的乡编白才壬 口王。.套接字编程接口使用了 S y s t em.N et.S ock et s名字空间。其提供的S ock et 类为Wi n3 2 下的套接字的托管版本。.N E T 网络编程提供了很多支持:-S ock et;-T cp C l i ent/U dp C l i ent/T cp Li
2、 s t ener;-WebR eq u es t/WebR es p ons e;-HT T P/F T P/F i l e+WebR eq u es t/WebR es p ons e 等。.NET与 Win32套接字对比.NetWin32Accept/BeginAccept/EndAcceptacceptBindbindCloseclosesockListenlistenSelectselectConnect/BeginConnect/EndConnectconnectGetSocketOption/SetSocketOptiongetsockopt/setsockoptReceive/
3、BeginReceive/EndReceiverecvSend/BeginSend/EndSendsendReceiveFrom/BeginReceiveFrom/EndReceiveFromrecvfromSendTo/BeginSendTo/EndSendTosendtoShutdownshutdown.N E T 网络中常用的类.S ock et:实现 B er k el ey 套接字接口;.D ns:提供简单的域名解析功能;.IP A ddr es s:提供网际协议(IP)地址;.IP E ndP oi nt:将网络端点表示为I P 地址和端口号;.IP Hos t E nt r y:
4、为 Int er net 主机地址信息提供容器类;.N et wor k s t r eam:提供用于网络访问的基础数据流。.T cp Li ns t er:从 T C P 网络客户端侦听连接。.T cp C l i ent:为T C P 网络服务提供客户端连接.U dp C l i ent:提供用户数据报(U D P)网络服务1.1.N E T 套接字概述.名字空间:S y s t em.N et.S ock et s.S ock et,S y s t em.N et 命名空间中的所有其他网络访问类都建立在该套接字实现的基础之0.S ock et 类支持两种基本模式:-同步:对执行网络操作的
5、函数(如 S end和R ecei v e)的调用一直等到操作完成后才将控制返回给调用程序。-异步:网络操作的函数调用立即返回。1.2.N E T 套接字构造.S ock et 的构造函数原型:-参 数 L指定S ock et 类用来解析网络地址的标准址 族(如:A ddr es s F am i l y.Int er N et wor k 成员指定I P 版本4地址族)。-参数2:指定套接字的类型(如:S ock et T y p e.S t r eam 成员表示一个用于发送和接收数据并且支持流控制的标准套接字)。-参数3:指定在S ock et 上通信时使用的网络协议(如:P r ot o
6、col T y p e.T cp 指示套接字使用T C P)。1.2.1 T C P/U D P 套接字构造.构造T C P 套接字.构造U D P 套接字套接字的常用属性.S ock et 常用属性:-B l ock i ng:设置或者获取套接字阻塞模式;-C onnect ed:获取当前套接字是否与远程主机相连;-Local E ndP oi nt:得到套接字的本地E ndP oi nt 对象;-R em ot eE ndP oi nt:得到套接字的远程E ndP oi nt 对象;-S ock et T y p e:套接字类型。套接字的常用方法.S ock et 常用同步的方法:-A c
7、cep t;-B i nd;-C l os e;-C onnect;-D i s connect;-Li s t en;-R ecei v e/R eci v eF r om;-S el ect;-S end/S endT o/S endF i l e;-S et S ock et O p t i on/G et S ock et O p t i on;-S h u t down;说明:红色的方法有对应的异步方法。1.2.2 使用套接字.创建套接字后:-在客户端,通过C onnect 方法连接到指定的服务器,并通过 S end/S endT o 或者 R ecei v e/R ecei v e
8、F r om 从服务端接收数据;-在服务器端,使用B i nd方法绑定所指定的接口使S ock et 与一个本地终结点相联,并通过Li s t en方法侦听该接口上的请求,当侦听到用户端的连接时,调用A ccep t 完成连接的操作,创建新的S ock et 以处理传入的连接请求。-使用完S ock et 后,使用S h u t down方法结束通信,并使用C l os e方法关闭S ock et o.上面的是同步方式的通信,还有相对应的异步的Beg i n/En d连接与通信方式。1.2.3Bi n d 方法.套接字服务器的绑定端点需要使用到S o c k et.Bi n d()方法。.在调
9、用Bi n d之前,必先创建本地I PEn dPo i n t。可以用 I PAddr es s.An y 作为地址参数创建一个I PEn dPo i n t,这样,将会使用所有可能的网络地址。.通过调用L o c a lEn dPo i n t 获知所分配的本地网络地址和端口号。1.2.4L i s t en 方法.S o c k et.L i s t en O 将套接字置于监听状态。-b a c k lo g 挂起连接队列的最大长度。1.2.5S et S o c k et O p t i o n 设置或者取消套接字的对应的属性。-参数 1:可以是 S o c k et,I P,T C P
10、,U D P;-参数2:各种与参数1对应的属性,如:Br o a dc a s t,R ec evi eBu f f er,R ec ei veT i meo u t 等待。-参数 3:t r u e/f a ls e0 t r u e一使 能;f a ls e一取消。1.3地址/端口信息.T C P/I P使用一个网络地址和一个服务端口号来唯一标识设备。-网络地址标识网络上的特定设备;-端口号标识要连接到的该设备上的特定服务。.网络地址和服务端口的组合称为网络端点,它在.N ET中由En dPo i n t类表示。对 于I P地址族,该类为I PEn dPo i n t。1.3.UPEndP
11、oint 使用.构造函数两种:.其IPEndPoint的使用.问题:在W in32中记录IP地址和端口信息是使用的什么?1.3.2 地址处理.I PAddr es s 在 S y s t em.N et 名字空间中。.它包含计算机在I P 网络上的地址相关操作和属性。.根据字符串获取I PAddr es s 信息:-Pa r s e();.提供的常用地址:-An y;-Br o a dc a s t;-L o o p b a c k;-N o n e;1.3.3 主机解析.D n s 类是一个静态类,它从域名系统中检索关于特定主机的信息。.I PHo s t En t r y 类将主机名、别名
12、和一组匹配的I P 地址关联。常和D n s 类一起使用。.在 I PHo s t En t r y 类的实例中返回来自D N S 查询的主机信息。如果指定的主机在数据库中有多个入口,W O I PHo s t En t r y 包含多个I P地址和别名。.问题:在 W i n 32中记录地址和机器名信息是使用的什么?1.3.4主机解析用法.D n s.R es o ve用于解析主机名到I PHo s t En t r y。.使用:1.3.5D n s 类常用方法.Get Ho s t N a me()可以获得主机名。.Get Ho s t By N a me()方法根据主机名向D N S 服
13、务器查询主机信息。.Get Ho s t By Addr es s ()方法根据地址信息查询主机信息。1.3.6示例1-地址信息.+.d:1.3.7 e.a y 2.a.a ll.i ,t.4-1.3.7 示例2构造服务器.d:W i n 32e.o.2C d.b.,t.4-1 X.d X.u .W i n 32如何创建并绑定一个服务器套接字的?1.4出错/异常信息.S o c k et Ex c ep t i o n 用来抛出S o c k et 相关异常信息。.当网络发生错误时,S o c k et 和 D n s 引发S o c k et Ex c ep t i o n。.使用 S o
14、c k et Ex c ep t i o n.Er r o r C o de 可以获取特定的错误代码,M es s a g e可以获得错误消息。2.同步服务器/客户机.讨论一种常见网络服务器模式:-同步阻塞服务器;-同步阻塞客户机;.和Win32下的阻塞模型类似,对每一个接受的请求产生新的线程,并在此线程中完成所有的与客户机的数据交互。2.1 同步阻塞服务器开发.这是使用起来最简单的一种模型。.任何时候调用一个绑定I/O的.NE T 套接字方法,如果套接字上没有等候处理的数据,该调用就会阻塞。.如果需要做其他的事情,或者为其它的连接请求提供服务,就需要在应用程序中创建额外的线程。.和 W i
15、n 3 2 下的阻塞模型类似。同步阻塞模型2.1.1 同步 A c c e p t.其函数定义:.A c c e p t以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的S o c k e t o.此处使用 S o c k e t.R e m o t e E n d Po i n t 来获取连接机器的I P和端口信息。.问题:W i n 3 2中何处获取请求连接机器的地址和端口信息?同步A c c e p t接受连接.在阻止模式中,A c c e p t将一直处于阻止状态,直到传入的连接尝试排入队列。连接被接受后,原来的S o c k e t继续将传入的连接请求
16、排入队列,直到您关闭它。2.1.2同步S e n d 发送数据 将数据发送到连接的S o c k e t:.S o c k e t F l a g s 通常使用 S o c k e t F l a g s.No n e,发送字节数的默认值为缓冲区的大小。.S e n d 对面向连接的协议和无连接协议均适用。同步S e n d注意事项.如果您使用的是面向连接的协议,则除非使用S o c k e t.S e n d T i m e o ut设置了超时值,否则,S e n d将一直处于阻止状态,直到发送完缓冲区中的所有字节。.应由应用程序负责跟踪已发送的字节数并重试操作,直到应用程序发送完想要发送的
17、缓冲区中的字节数为止。.不能保证发送的数据会立即出现在网络上。为提高网络效率,基础系统可能会延迟传输,直到收集了足够多的传出数据后才开始发送。2.1.3同步R e c e i ve 发送数据.从 S o c k e t 中接收数据(常用第3 个):.R e c e i ve 方法将数据读入第一个参数中,并返回成功读取的字节数。第一个i n t 是接收多少数据到缓冲区,第二个in t 是指明缓冲区的偏移量。.如果没有可读取的数据,则R e c e iv e 方法将一直处于阻止状态,直到数据可用,除非使用R e c e iv e Tim e o u t 设置了超时值。如果超过超时值,R e c e
18、 iv e 调用将引发 So c k e t Ex c e pt io n。同步Se n d/R e c e iv e 示例2.1.4另一种方式收发数据.Sy s t e m.Ne t.So c k e t s.Ne t wo rk s t re a m 提供了用于网络访问的基础数据流。.Ne t wo rk s t re a m 提供的 Writ e 和 R e a d方法用于简单的单线程同步阻止I/0o.另外Ne t wo rk s t re a m 还提供异步的发送和接收数据的方法:-Be g in Writ e/En d Writ e-Be g in R e a d/En d R e
19、a dWrit e 发送数据.Writ e 函数定义:-参数1:by t e 数组,包含即将写入到Ne t wo rk s t re a m 的数据。-参数2:bu f f e r中开始写入数据的位置。-参数3:准备写入Ne t wo rk St re a m 的字节数。R e a d接收数据.函数定义:12O参据参-数-用于存储从Ne t wo rk s t re a m读取的bu f f e r中的开始存放数据的偏移量。-参数3:bu f f e r长度。-返回值:成功读取的字节数。Write/Read-示例2.2 同步客户机.客户机需要通过三次握手完成到服务器的连接。.NET环境提供了同
20、步Co n n e c t 函数完成到服务器的连接。.TCP 连接中Co n n e c t 方法会同步建立Lo c a l En d P o in t 与指定远程终结点之间的网络连接,同时保存本地地址和端口信息。.远程结点的信息存放在So c k e t.R e m o t e En d P o in t 中。.客户机与服务器的通信也是使用Se n d/R e c e iv e或 Ne t wo rk s t re a m 的 R e a d/Writ e 完成。2.2.1 客户机 Co n n e c t.NET环境下常使用的Co n n e c t 原型有:.其中后面两个为.NET 2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c_ 网络 编程 _c_ 套接
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内