Socket网络编程学习笔记(3)利用套接字助手类.doc_第1页
Socket网络编程学习笔记(3)利用套接字助手类.doc_第2页
Socket网络编程学习笔记(3)利用套接字助手类.doc_第3页
Socket网络编程学习笔记(3)利用套接字助手类.doc_第4页
Socket网络编程学习笔记(3)利用套接字助手类.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Socket网络编程学习笔记(3):利用套接字助手类 在上一篇中已经介绍了利用Socket建立服务端和客户端进行通信,如果需要的朋友可访问Socket网络编程学习笔记(2):面向连接的Socket。在本篇中,将利用C套接字的助手类来简化Socket编程,使得刚刚接触到网络编程的朋友们更容易上手。跟上篇一样,通过C套接字的助手类来编程同样分服务端和客户端。一、服务端侦听模式1、创建套接字与IPEndPoint绑定,并设置为侦听模式。1/创建IPEndPoint实例2IPEndPointipep=newIPEndPoint(IPAddress.Any,6001);3/*/*4/创建一个套接字5serverSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);6/将所创建的套接字与IPEndPoint绑定7serverSocket.Bind(ipep);8/设置套接字为收听模式9serverSocket.Listen(10);10*/11serverTcp=newTcpListener(ipep);12serverTcp.Start();其中注释掉的部分是利用Socket来创建侦听,这里我们可以看到用套接字助手类只通过二行就可以建立起侦听,而且如果要更方便一些,可以不指定IPEndPoint,单单指定端口就可以了,如: 1serverTcp=newTcpListener(6001);2serverTcp.Start();2、侦听并获取接入的客户Socket连接1while(true)23try45/在套接字上接收接入的连接6/clientSocket=serverSocket.Accept();7clientTcp=serverTcp.AcceptTcpClient();8clientThread=newThread(newThreadStart(ReceiveData);9clientThread.Start();1011catch(Exceptionex)1213MessageBox.Show(listeningError:+ex.Message);1415在这里用clientTcp = serverTcp.AcceptTcpClient();来接收连接的TcpClient对象,我们了可以通过 1clientSocket=serverTcp.AcceptSocket();来接收一个Socket对象,如果接收的是一个Socket对象,那么接下来的接收和发送信息跟上篇一样,如果接收的是TcpClient对象,那么我们来看一下如何来接收和发送信息:3 、接收和发送信息1privatevoidReceiveData()23boolkeepalive=true;4TcpClients=clientTcp;5NetworkStreamns=s.GetStream();6Bytebuffer=newByte1024;78/根据收听到的客户端套接字向客户端发送信息9IPEndPointclientep=(IPEndPoint)s.Client.RemoteEndPoint;10lstServer.Items.Add(Client:+clientep.Address+(+clientep.Port+);11stringwelcome=Welcometomytestsever;12bytedata=newbyte1024;13data=Encoding.ASCII.GetBytes(welcome);14/s.Send(data,data.Length,SocketFlags.None);15ns.Write(data,0,data.Length);1617while(keepalive)1819/在套接字上接收客户端发送的信息20intbufLen=0;21try2223bufLen=s.Available;24/s.Receive(buffer,0,bufLen,SocketFlags.None);25ns.Read(buffer,0,bufLen);26if(bufLen=0)27continue;2829catch(Exceptionex)3031MessageBox.Show(ReceiveError:+ex.Message);32return;3334clientep=(IPEndPoint)s.Client.RemoteEndPoint;35stringclientcommand=System.Text.Encoding.ASCII.GetString(buffer).Substring(0,bufLen);3637lstServer.Items.Add(clientcommand+(+clientep.Address+:+clientep.Port+);38394041通过NetworkStream ns = s.GetStream();可以获取网络流对象,以此来发送和接收信息。二、客户端连接1、创建套接字并连接到服务器1/创建一个套接字2IPEndPointipep=newIPEndPoint(IPAddress.Parse(),6001);3/clientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);4clientTcp=newTcpClient();56/将套接字与远程服务器地址相连7try89/clientSocket.Connect(ipep);10clientTcp.Connect(ipep);1112catch(SocketExceptionex)1314MessageBox.Show(connecterror:+ex.Message);15return;162、接收服务器发送的信息1ns=clientTcp.GetStream();2while(true)34/接收服务器信息5intbufLen=0;6try78/bufLen=clientSocket.Available;9bufLen=clientTcp.Available;1011/clientSocket.Receive(data,0,bufLen,SocketFlags.None);12ns.Read(data,0,bufLen);13if(bufLen=0)1415continue;161718catch(Exceptionex)1920MessageBox.Show(ReceiveError:+ex.Message);21return;222324stringclientcommand=System.Text.Encoding.ASCII.GetString(data).Substring(0,bufLen);2526lstClient.Items.Add(clientcommand);2728同服务端,通过ns = clientTcp.GetStream();获取网络流来读取服务端发过来的信息。3、向服务端发送信息1/向服务器发送信息23bytedata=newbyte1024;4data=Encoding.ASCII.GetBytes(txtClient.Text);5/clientSocket.Send(data,data.Length,SocketFlags.None);6ns.Write(data,0,data.Length);到这里,我们就可以实现客户端与服务端的连接和通讯了。一些方法跟上一篇提到的类似,这里就不再详述。接下来,我会讲一下关于Socket发送的消息边界处理问题、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论