




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《CB-T 3873-1999舷窗矩形窗密封垫料》新解读
- 新解读《CB-T 60 - 1999船用眼板》新解读
- 质量保证措施
- 论土地所有权和使用权争议处理
- 汽车传感器与检测技术电子教案:霍尔式节气门位置传感器
- 济南市佳兴天城营销推广策略报告52p
- 介绍家乡教学活动方案
- 物理中考一轮复习教案 第一讲 声现象
- 从装开业活动方案
- 仓鼠手工活动方案
- 2025年农村集体土地上房屋买卖合同模板
- 1999年普通高等学校招生全国统一考试.文科数学试题及答案
- 2025年安全员之A证企业负责人模拟题库及答案(附答案)
- 美容院卫生管理制度(常用版)
- 机场行李输送系统设计论文-本科论文
- 白带常规报告单模板
- 2022年全国工会财务知识大赛参考题库精简600题(含各题型)
- 《国学典籍英译》课程教学大纲
- 校外毕业设计(实习)申请表模板.docx
- 钢管悬挑脚手架搭设方案
- 《厨余垃圾处理厂运行监管标准》(征求意见稿)
评论
0/150
提交评论