UDP和TCP网络实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安理工大学高科学院

TCP\UDP程序开发

实验报告

姓名:

专业:信息系统与信息管理

班级:

学号:

日期:

1:实验题目:基于UDP\TCP的聊天程序开发

2:实验目的:

开发TCP\UDP协议应用程序,掌握网络应用程序的工作原理。通过本实验,深入理解TCP和UDP协议的异同点,了解网络协议的工作过程,学会网络通讯编程的基本方法,能够编制网络应用程序。

3.实验报告内容:

(实验程序与注解如下)

namespace ChatClient

{

using System;

using ;

using .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");

}

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 )

{

//先检查这个结束消息是否来自主线程还是来自其他聊天客户

Char [] separators = {':'};

String [] vars = strData.Split(separators);

//如果是本地机器

if( vars[0] == m_szHostName )

{

//结束线程

Console.WriteLine("shutting down Listener thread...");

//在这种情况下主线程已经把m_Done设为true,

//这里为了保险起见,再次设置m_Done为true

m_Done = true;

}

else

{

//显示消息,某个聊天客户已经离开

Console.WriteLine("{0} has left the conversation", vars[0]); }

}

else

{

//如果这是一条聊天消息,则检查是否来自

//本地机器,如果不是,则显示这条消息

if(strData.IndexOf(":") > 0)

{

Char [] separators = {':'};

String [] vars = strData.Split(separators);

if( vars[0] != m_szHostName )

{

Console.WriteLine(strData);

}

}

}

}

Console.WriteLine("Listener thread finished...");

return;

}

public static int Main( String [] args )

{

if( args.Length > 0 )

{

//显示使用方法信息

Usage();

return 1;

}

//得到主机名称和地址

//m_szHostName = Dns.GetHostName(); IT超人

m_szHostName = "127.0.0.1";

//初始化

Console.WriteLine("Initializing...");

Initialize();

相关文档
最新文档