1 西安理工大学高科学院 TCP\UDP程序开发 实验报告 姓名: 专业:信息系统与信息管理 班级: 学号: 日期: 2 1:实验题目:基于UDP\TCP的聊天程序开发 2:实验目的: 开发TCP\UDP 协议应用程序,掌握网络应用程序的工作原理。通过本实验,深入理解TCP 和 UDP 协议的异同点,了解网络协议的工作过程,学会网络通讯编程的基本方法,能够编制网络应用程序。 3.实验报告内容: (实验程序与注解如下) namespace ChatClient { using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.Text; public class Class1 { //UDPClient 对象 private static UdpClient m_Client; //本地和远程端口 private static int LocalPort = 8080; private static int RemotePort = 8080; //本地主机名称 private static string m_szHostName; //广播组地址 private static IPAddress m_GroupAddress; //远程广播组端 private static IPEndPoint m_RemoteEP; //跟踪用户是否退出程序 private static bool m_Done = false; //显示使用方法 public static void Usage() { Console.WriteLine("UDP Multicast Chat Utility"); Console.WriteLine("\nUsage:"); Console.WriteLine("chat.exe"); } 3 public static void Initialize() { //初始化UDPClient 对象 m_Client = new UdpClient(LocalPort); //创建多目标广播组对象 m_GroupAddress = IPAddress.Broadcast; //加入组 m_Client.JoinMulticastGroup(m_GroupAddress); //创建远程广播组端 m_RemoteEP = new IPEndPoint( m_GroupAddress, RemotePort); } public static void Terminate() { //退出广播组 m_Client.DropMulticastGroup(m_GroupAddress); } public static void Listener() { //确保主线程开始接受用户输入 Thread.Sleep(2000); //ASCII 编码 Encoding ASCII = Encoding.ASCII; //循环中不断接受数据 while(!m_Done) { IPEndPoint endpoint = null; //接受数据 Byte[] data = m_Client.Receive(ref endpoint); //得到数据的 ASCII 字符串形式 String strData = ASCII.GetString(data); //如果包含:@ if( strData.IndexOf(":@") > 0 ) { //先检查这个结束消息是否来自主线程还是来自其他聊...