如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第10章TCP协议开发TCP协议是互联网中最重要的协议之一,几乎所有的网络服务都是基于TCP协议的。TCP协议最主要的特点是:1)基于连接的协议。2)保证数据包准确到达。3)保证各数据包到达的顺序与数据包发出的顺序相同。4)传输的数据无消息边界。10.1基本概念-同步套接字在通过Socket进行连接、接收、发送操作时,客户机或服务器会暂停当前工作,处于等待状态,即一直等到有数据时才继续执行下面的语句。一般在阻塞方式下使用这种方式。可见,同步套接字适用于网络传输量不太大的情况。当网络传输量很大时,长时间的等待可能会让用户无法忍受。-异步套接字在通过Socket进行连接、接收、发送操作时,客户机或服务器不会暂停当前工作,而是利用callback机制进行连接、接收和发送处理。异步套接字适用于需要在网络上进行大量数据传输的应用程序,比如有几万客户同时传输的情况。10.2定义与获取主机信息1.定义主机对象IPEndPoint类包含应用程序连接到主机上的服务所需的主机和端口信息。通过组合服务的主机IP地址和端口号,IPEndPoint类形成到服务的连接点。常用的方法原型:publicIPEndPoint(IPAddressaddress,intport);说明:address:IP地址port:端口号功能:初始化IPEndPoint类的实例。用法举例:IPAddressmyServerIP=newIPAddress.Parse(“127.0.0.1”);IPEndPointmyServer=newIPEndPoint(myServerIP,13);2.主机解析程序实例——Dns.Resolve()的使用usingSystem;usingSystem.Net;publicclassTestFileStream{staticvoidMain(){Console.Write("输入主机名或者IP地址:");stringstr=Console.ReadLine();IPHostEntryhost=Dns.Resolve(str);for(inti=0;i<host.AddressList.Length;i++){Console.WriteLine(host.AddressList[i].ToString());Console.WriteLine(host.HostName);}Console.ReadLine();}}10.3同步套接字编程实现方法usingSystem.Net;usingSystem.Net.Sockets;……IPAddressip=IPAddress.Parse("127.0.0.1");IPEndPointiep=newIPEndPoint(ip,6788);Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);socket.Bind(iep);socket.Listen(10);//最多允许10个客户端同时连接while(true){SocketclientSocket=socket.Accept();……}2.客户端建立与服务器的连接客户端在传送数据前,只需要做两件事:1)创建一个套接字。2)使用Socket类的Connect()方法将套接字与远程服务器地址相连。IPAddressip=IPAddress.Parse("202.196.101.246");//服务器IPIPEndPointiep=newIPEndPoint(ip,6788);Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);socket.Connect(iep);3.发送数据(1)使用Socket类的Send()方法(2)使用NetworkStream类的Write()方法。注意:不论是使用Send()方法或者使用Write()方法,都必须先将发送的数据转换为字节数组,然后使用Send()或Write()将数据发送出去。实际上,这个字节数组的数据并不是直接发送到远程机器上,而是发送到了TCP缓冲区中(该缓冲区默认大小为1024字节)。(1)使用Socket类的Send()方法对服务器端,可以使用客户端连接时创建的套接字发送数据,例如:……byte[]bytes=newbyte[1024];stringmessage="发送的数据";bytes=System.Te