aspnet全面掌握visualc实现udp协议(编辑修改稿)内容摘要:

ializeComponent 过程的后面添加下面代码,下列代码是定义过程“ start_server”。 此过程的功能是获取客户端对时请求数据,并向客户端发送服务器当前时间和日期。 public void start_server ( ) { while ( true ) { //接收从远程主机发送到本地 8080端口的数据 byte[] recData = ( ref receivePoint )。 ASCIIEncoding encode = new ASCIIEncoding ( )。 //获得客户端请求数据 string Read_str = ( recData )。 //提取客户端的信息,存放到定义为 temp的字符串数组中 string[] temp = ( /.ToCharArray ( ) )。 //显示端口号的请求信息 ( 时间: + . ToLongTimeString ( ) + 接收信息如下: )。 ( 客户机: + temp[0] )。 ( 端口号: + temp[1] )。 //发送服务器端时间和日期 byte[] sendData = ( ( ) )。 ( 发送服务器时间。 )。 //对远程主 机的指定端口号发送服务器时间 ( sendData , , temp[0] , ( temp[1] ) )。 } } 请注意:上述代码中约定客户机程序发送对时请求信息到服务器的 8080 端口号。 服务器端程序接收发送到本地 8080 端口号的数据就完成了数据接收。 为了能够让服务器端程序知道是那台客户机提出请求和要把对时信息发送到客户机的那个端口号上,客户端程序对发送的对时请求信息进行了设计。 客户端的对时请求 信息结构为: 计算机名称 + / + 客户机接收信息端口号 这样如果客户端计算机名称为: majinhu,接收服务器端时间数据的端口号是 8080,则客户端程序发送的对时请求数据就为: majinhu/8080。 服务器端程序在接收到客户端对时请求数据,并进行分析后,就能够通过 UdpClient 类的 Send 方法准确的把服务器端当前的时间和日期发送到客户端指定的端口号上。 这样客户端程序通过读取指定的端口号,就能够获得服务器端当前的时间和日期,从而以此来修正客户端的时间和日期了。 “ start_server”过程之后面添加下面代码,下列代码是定义“ run”过程。 “ run”过程的作用是创建一个线程实例,并以“ start_server”过程来初始化线程实例。 之所以采用线程是因为服务器端程序需要不间断读取发送到 8080 端口号,并且 Receive 方法是一个阻塞式方法。 采用线程就是为了保证服务器端程序正常运行: public void run ( ) { //利用本地 8080 端口号来初始化一个 UDP网络服务 server = new UdpClient ( port )。 receivePoint = new IPEndPoint ( new IPAddress ( ip ) , port )。 //开一个线程 startServer = new Thread ( new ThreadStart ( start_server ) )。 //启动线程 ( )。 } 中的 Main 函数之后添加下列代码,下列代码是定义“ Form1_Load”事件,在此事件中将调用“ run”过程,这样当服务器端程序运行后,就启动网络对时服务: private void Form1_Load ( object sender , e ) { //启动对时服务 run ( )。 } “ Form1_Load”事件之后,添加下列代码,下列代码是定义 button1的“ Click”事件,此事件的作用是清除服务器端程序显示的日志信息: private void button1_Click ( object sender , e ) { //清除服务 器端程序日志 ( )。 } 中的 Dispose 方法。 下列代码的功能是手动收集程序中使用的资源: protected override void Dispose ( bool disposing ) { try { //关闭线程 ( )。 //清除资源 ( )。 } catch { }。 if ( disposing ) { if ( ponents != null ) { ( )。 } } ( disposing )。 } 至此,在上述步骤都正确完成,【 UDP 对时服务器端】项目的全部工作就完成了。 图 02【 UDP 对时服务器端】运行后的界面,在日志信息中记录了对时请求客户机的名称,发送对时数据的端口号以及客户端请求的时间: 图 02:【 UDP 对时服务器端】项目的运行界面 五. Visual C#实现网络对时系统之客户端程序的具体步骤: 客户端的程序比服务器端程序要复杂些,因为客户端程序不仅要往服务器端发送对时请求信息,接收服务器端反馈的日期和时间数据,还要提取这些时间和日期信息,并以此来修改本地端的日期和时间。 参照上面实现网络对时系统服务器端程序,实现请求信息的发送和接收应相对要容易许多。 所以客户端程序的关 键就是根据获得的服务器端日期、时间数据来修改本地的日期、时间。 在 .Net FrameWork SDK 3705 版本中并没有提供修改本地日期和时间的函数和类库,本文的实现办法是引入 WinAPI 函数,通过对应的 WinAPI 函数来更正本地时间和日期的,具体可参阅以下第十三和第十八步。 以下是 Visual C#实现网络对时系统之客户端程序的具体实现步骤: Visual Studio .Net。 【文件】 |【新建】 |【项目】后,弹出【新建项目】对话框。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。