热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UDP聊天代码监听服务器端代码

UDP聊天代码监听服务器端代码添加引用usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.Co

UDP聊天代码监听服务器端代码

添加引用

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

 

///


  /// udp连接系统定义的必需的设计器变量
  ///

  public UdpClient udpClient;
  private System.Windows.Forms.TextBox textBox4;
  private System.Windows.Forms.Label label4;
  private System.Windows.Forms.TextBox textBox3;
  private System.Windows.Forms.Label label3;
  public Thread UdpThread;
  public const int listenPort = 12000;

按钮事件(监听消息)

private void button2_Click(object sender, System.EventArgs e)
  {
   
   if (udpClient!=null)
   {
    UdpThread.Abort();
    Thread.Sleep(TimeSpan.FromMilliseconds(500));
    udpClient.Close();
   }
   try
   { 
    udpClient=new UdpClient(int.Parse(textBox2.Text));
    UdpThread=new Thread(new ThreadStart(UdpReciveThread));
    UdpThread.Start();

   }
   catch(Exception y)
   {
    MessageBox.Show(this,y.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
   }
   
  } 

//接收数据线程
  public void UdpReciveThread()
  {
   
   bool dOne= false;

   
      
   IPEndPoint remoteHost=new IPEndPoint(IPAddress.Any,listenPort);

   this.statusBar1.Text="正在启动监听...";
   while(udpClient!=null && Thread.CurrentThread.ThreadState.Equals(ThreadState.Running))
   {
    try
    {
     this.statusBar1.Text="等待连接...";
     byte[] buf=udpClient.Receive(ref remoteHost);
     string bufs=Encoding.UTF8.GetString(buf);


     int ListCount=0;
     if(listView1.Items.Count==0)
     {
      listView1.Items.Add(DateTime.Now.ToString());
      listView1.Items[0].SubItems.Add(remoteHost.Address.ToString());
      listView1.Items[0].SubItems.Add(bufs);
     }
     else
     {
      ListCount=listView1.Items.Count;
      listView1.Items.Add(DateTime.Now.ToString());
      listView1.Items[ListCount].SubItems.Add(remoteHost.Address.ToString());
      listView1.Items[ListCount].SubItems.Add(bufs);
    
     }
     this.statusBar1.Text="数据报长度:"+bufs.Length;
     
     
    }
    catch(Exception y)
    {
     this.statusBar1.Text="发生错误:"+y.Message+" "+y.Source;

    }

   }
   this.statusBar1.Text="监听结束...";
  }

 


推荐阅读
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
author-avatar
宝宝贝贝侠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有