欢迎来到天天文库
浏览记录
ID:39575665
大小:59.97 KB
页数:6页
时间:2019-07-06
《实验三Socket通信实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三Socket通信实验报告(1)实验目的和要求1.掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序的方法;2.掌握客户/服务器(C/S)应用的工作方式;3.学习网络中进程之间通信的原理和实现方法;4.理解单播、组播和广播的原理并比较其不同之处;5.要求本机既是客户端又是服务器端;(2)实验内容所编写的程序应具有如下功能:1.具有点对点通信功能,任意客户端之间能够发送消息;2.具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到;3.具有广播功能,客户端能够向所有其他成员广播消息;(3)编程语言和环境1.编程
2、语言C/C++/C#/Java等均可;2.编程环境Windows(MSVisual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译器GCC)均可;(4)实验主要功能实现说明以下为针对三个实验内容实现方法的简要说明,示例所用语言为C。服务器端客户端socketbindlistensocketconnectacceptrecvsendrecvclosesendclose阻塞自己等待客户连接建立连接请求数据应答数据基于C的面向连接的socket编程模型1.点对点通信功能实现网络点对点通讯程序的关键步骤就是实现信息在网络中的发送和接
3、收。数据接收使用的是Socket,数据发送使用的是NetworkStream。1.1利用Socket来接收信息TcpListenertlListen1=newTcpListener(8889); //侦听端口号 tlListen1.Start(); SocketskSocket=tlListen1.AcceptSocket(); //接受远程计算机的连接请求,并获得用以接收数据的Socket实例 EndPointtempRemoteEP=skSocket.RemoteEndPoint ; //获得远程计算机对应的网络
4、远程终结点 while( true) { Byte[]byStream=newByte[80]; //定义从远程计算机接收到数据存放的数据缓冲区 inti=skSocket.ReceiveFrom (byStream ,reftempRemoteEP ); //接收数据,并存放到定义的缓冲区中 stringsMessage=System.Text.Encoding.UTF8.GetString(byStream ); //以指定的编码,从缓冲区中解析出内容
5、 MessageBox.Show(sMessage); //显示传送来的数据 }1.2利用NetworkStream来传送信息TcpClienttcpc=newTcpClient( "10.138.198.213" ,8888 ); //对IP地址为“10.138.198.213”的计算机的8888端口提出连接申请 NetworkStreamtcpStream=tcpc.GetStream(); //如果连接申请建立,则获得用以传送数据的数据流stringsMsg="您好,见到您很高兴"; Strea
6、mWriterreqStreamW=newStreamWriter(tcpStream ); //以特定的编码往向数据流中写入数据,默认为UTF8编码 reqStreamW.Write(sMsg ); //将字符串写入数据流中 reqStreamW.Flush(); //清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流2.群组通信功能组播编程需要UDP,有两个类支持组播网络编程Socket和UdpClient.一台计算机要加入某一个组,然后接收发往这个组的信息。Socket类要调用SetSocketOption函数
7、加入和离开某一个组。UdpClient类有直接的加入和离开某个组的成员函数可以调用。而向某个组发信息,则没有什么特殊的,只需把发送数据的目的地址设为组播地址就可以了。发送端: Sockets=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); IPEndPointiep=newIPEndPoint(IPAddress.Parse("224.0.0.1"),3000); EndPointep
8、=(EndPoint)iep; byte[]b=Encoding.ASCII.GetBytes("justatest!"); s.SendTo(b,
此文档下载收益归作者所有