




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 武汉职业招聘面试题库精 编
- 财经界高级会计面试题目精 编
- 学前谈话活动讲课
- 天气预报课程讲解
- 5G与广播电视融合服务发展趋势
- 学校年度汇报总结
- 细胞分裂染色体组
- 视力防控工作汇报
- 2026届青海省重点中学化学高一上期末质量检测模拟试题含解析
- 乳字笔顺讲解课件
- 2025至2030中国会议平板行业发展趋势分析有效策略与实施路径评估报告
- 2025年《工会基础知识》试题库及答案
- 2025年江苏省靖江市辅警招聘考试试题题库及答案详解(名师系列)
- 机械加工投标技术方案(3篇)
- 2025年高考化学试卷真题完全解读(河北卷)
- 成都东部集团有限公司招聘考试真题2024
- 肺癌的护理新进展
- 2025年党建知识应知应会题库及答案
- JJG 597-2025交流电能表检定装置检定规程
- DBJT 13-318-2025建筑施工盘扣式钢管脚手架安全技术标准
- 2025年湖南长沙市直事业单位公开招聘选调工作人员160人真题含答案
评论
0/150
提交评论