C#net同步异步SOCKET通讯和多线程总结.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:12 大小:67KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

C#net同步异步SOCKET通讯和多线程总结.doc

C#net同步异步SOCKET通讯和多线程总结.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

同步套接字通信Socket支持下的网上点对点的通信服务端实现监听连接,客户端实现发送连接请求,建立连接后进行发送和接收数据的功能服务器端建立一个socket,设置好本机的ip和监听的端口与socket进行绑定,开始监听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通信。客户端建立一个socket,设置好服务器端的IP和提供服务的端口,发出连接请求,接收到服务的确认后,尽力连接,开始与服务器进行通信。服务器端和客户端的连接及它们之间的数据传送均采用同步方式。SocketSocket是tcp\ip网络协议接口。内部定义了许多的函数和例程。可以看成是网络通信的一个端点。在网络通信中需要两个主机或两个进程。通过网络传递数据,程序在网络对话的每一端需要一个socket。Tcp/IP传输层使用协议端口将数据传送给一个主机的特定应用程序,协议端口是一个应用程序的进程地址。传输层模块的网络软件模块要于另一个程序通信,它将使用协议端口,socket是运行在传输层的api,使用socket建立连接发送数据要指定一个端口给它。Socket:StreamSocket流套接字Socket提供双向、有序、无重复的数据流服务,出溜大量的网络数据。Dgramsocket数据包套接字支持双向数据流,不保证传输的可靠性、有序、无重复。Rowsocket原始套接字访问底层协议建立socket用C#命名空间:usingSystem.Net;usingSystem.Net.Socket;构造新的socket对象:socket原型:Publicsocket(AddressFamilyaddressFamily,SocketTypesockettype,ProtocolTypeprotocolType)AddressFamily用来指定socket解析地址的寻址方案。Inte.Network标示需要ip版本4的地址,Inte.NetworkV6需要ip版本6的地址SocketType参数指定socket类型Raw支持基础传输协议访问,Stream支持可靠,双向,基于连接的数据流。ProtocolType表示socket支持的网络协议定义主机对象:IPEndPoint类:IPEndPoint构造方法位置:System.Net原型:1)publicIPEndPoint(IPAddressaddress,intport)2)publicIPEndPoint(longaddress,intport)参数1整型int64如123456,参数2端口int32主机解析:利用DNS服务器解析主机,使用Dns.Resolve方法原型:publicstaticIPHostEntryResolve(stringhostname)参数:待解析的主机名称,返回IPHostEntry类值,IPHostEntry为Inte.Net主机地址信息提供容器,该容器提供存有IP地址列表,主机名称等。Dns.GetHostByName获取本地主机名称原型:publicstaticIPHostEntryGetHostByName(stringhostname)GetHostByAddress原型:1)publicstaticIPHostEntryGetHostByAddress(IPAddressaddress)参数:IP地址2)publicstaticIPHostEntryGetHostByAddress(stringaddress)IP地址格式化字符串端口绑定和监听:同步套接字服务器主机的绑定和端口监听Socket类的Bind(绑定主机),Listen(监听端口),Accept(接收客户端的连接请求)Bind:原型:publicvoidBind(EndPointLocalEP)参数为主机对象IPEndPointListen:原型:publicvoidListen(intbacklog)参数整型数值,挂起队列最大值accept:原型:publicsocketaccept()返回为套接字对象演示程序:IPAddressmyip=IPAddress.Parse(“127.0.0.1”);IPEndPointmyserver=newIPEndPoint(myip,2020);Socketsock=newSocket(AddressFamily.Inte.Network,SocketType.Stream,ProtocolType.Tcp);Sock.Bind(myserver);Sock.Listen(50);Socketbbb=sock.Accept();发送数据:方法1:socket类的send方法二