欢迎来到天天文库
浏览记录
ID:57011915
大小:548.50 KB
页数:30页
时间:2020-07-26
《Socket网络编程课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章Socket网络编程110.1Socket网络编程基础Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。就是程序员可以通过socket来发送和接收网络上的数据。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。 在C#中,MS为我们提供了 System.Net.Sockets命名空间,里面包含了Socket类。2要想访问网络,必须具有下面的基本条件:要确定本机的IP和端口,socket
2、只有与某一IP和端口绑定,才能发挥强大的威力。定义网络协议。最常见的两种协议:TCP&UDP。 如果具备了基本的条件,就可以开始用它们访问网络了。计算机A计算机B进程a进程bSocketSocket图20.6Socket通信原理3通信域,例如一个网络连接或者一个进程间通信管道;通信类型,例如流或数据报;协议,例如TCP(TransportControlProtocol,传输控制协议)或UDP(UserDatagramProtocol,用户报文协议)。Socket的定义如下:4字节流Socket:这是最常用的Socket类型,TCP/IP协议簇中的TCP协议使用此类接口
3、,它提供面向连接的(建立虚电路)、无差错的、发送先后顺序一致的、包长度不限和非重复的网络信包传输。数据报Socket:TCP/IP协议族中的UDP协议使用此类接口,它是无连接的服务,以独立的信包进行网络传输,信包最大长度为32KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。原始数据报Socket:提供对网络下层通讯协议(如IP协议)的直接访问,一般不是提供给普通用户的,主要用于开发新的协议或用于提取协议较隐蔽的功能。套接字分类:510.2面向连接的套接字编程6与TCP方式相关的Socket属性及方法Socket对象的创建下面实例化一个使用I
4、ntenetword网络协议、采用流式套接字和使用面向连接的TCP协议的套接字。Socketnewsock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);使用指定的地址族、套接字类型和协议初始化Socket类的新实例。publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,ProtocolTypeprotocolType)7Socket对象的常用属性Connect格式:publicboolConnected说明:获
5、取Socket的连接状态,若网络连接已成功创建则返回True,否则返回FalseLocalEndPoint格式:publicEndPoint说明:获取代表本地端计算机的EndPoint对象,包含IP地址和端口号等信息。ProtocolType格式:publicint说明:获取该Socked对象所使用的通信协议的种类。Handle格式:publicintPtr说明:获取该Socket对象在操作系统中的句柄。8Socket的绑定服务器端要进行侦听操作(Listen),必须将本机的IP和端口号与一个Socket进行绑定。Socket.Bind(EndPointlocalEP);End
6、Point类的说明功能:用来设置IP地址和端口号构造函数:IPEndPointipep=newIPEndPoint(IPAddress.Any,9050);属性:ConstintMaxPort;端口号最大值ConstintMinPort;端口号最小值IPAddressAddress;获取或设置IP地址Intport;获取或设置端口号9侦听(Listen)Socket对象在绑定完后,应该在该接口上侦听客户端的连接请求。PublicvoidListen(intbacklog)Backlog指明用户端Socket连接等候队列的大小。10接收连接请求(Accept)当Socket侦听到
7、有用户端Socket的连接请求时,会先产生相对应于用户端的Socket对象,并将这些对象置于等待连接队列中,然后我们必须调用Accept方法以完成连接。PublicSocketAccept();该方法返回一个Socket对象,对应连接队列中第一个申请连接的客户端Socket,之后程序就可以利用该对象与客户端通信。11接收数据(Receive)利用产生的客户端Socket的Receive()方法接收数据publicintReceive(byte[]buffer)buffer-Byte类型的数组
此文档下载收益归作者所有