实验三Socket通信实验报告 (1)实验目的和要求 1. 掌握VB、VC++、VS 或 JAVA 等集成开发环境编写网络程序的方法; 2. 掌握客户/服务器(C/S)应用的工作方式; 3. 学习网络中进程之间通信的原理和实现方法; 4. 理解单播、组播和广播的原理并比较其不同之处; 5. 要求本机既是客户端又是服务器端; (2)实验内容 所编写的程序应具有如下功能: 1. 具有点对点通信功能,任意客户端之间能够发送消息; 2. 具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到; 3. 具有广播功能,客户端能够向所有其他成员广播消息; (3)编程语言和环境 1. 编程语言 C/C++/C#/Java 等均可; 2. 编程环境 Windows(MS Visual 系列,VC/VB/VS.Net;)和Linux(编辑器 vi+编译器 GCC)均可; (4)实验主要功能实现说明 以下为针对三个实验内容实现方法的简要说明,示例所用语言为 C。 服 务 器客户端 socket bind listen socket connect accept recv send recv close send close 阻塞自己等待客户连接 建立连接 请求数据 应答数据 基于C 的面向连接的socket 编程模型 1. 点对点通信功能 实现网络点对点通讯程序的关键步骤就是实现信息在网络中的发送和接收。数据接收使用的是Socket,数据发送使用的是Netw orkStream。 1.1 利用Socket 来接收信息 TcpListener tlListen1 = new TcpListener ( 8889 ) ; //侦听端口号 tlListen1.Start ( ) ; Socket skSocket = tlListen1.AcceptSocket ( ) ; //接受远程计算机的连接请求,并获得用以接收数据的Socket 实例 EndPoint tempRemoteEP = skSocket.RemoteEndPoint ; //获得远程计算机对应的网络远程终结点 while ( true ) { Byte [] byStream = new Byte[80] ; //定义从远程计算机接收到数据存放的数据缓冲区 int i = skSocket.ReceiveFrom ( byStream , ref tempRemoteEP ) ; //接收数据,并存放到定义的缓冲区中 string sMessage = System.Text.Encoding.UTF8.GetString ( byStream ) ; //以指定的编码,从缓冲区中解析出内容 MessageBox.Show ( sMessage ) ; //显示传送来的数据 } 1.2 利用NetworkStream 来传送信息 TcpClient tcpc = new TcpClient ( "10.138.198.213" , 8888 ) ; //对IP 地址为“10.138.198.213”的计算机的8888 ...