zoukankan      html  css  js  c++  java
  • 开发基于UDP广播的小型局域网聊天室

    什么是UDP广播?
    在了解其之前我们先了解一下什么是UDP协议,TCP协议也许大家已经知道,TCP协议主要是用于建立可靠的数据传输连接,而UDP(UserDatagramProtocol,用户数据包协议)与TCP协议之间的不同在于UDP不是一种基于稳定连接的通讯协议。UDP协议将独立的数据包从一台计算机传输到另外一台计算机,但是并不保证接受方能够接收到该数据包,也不保证接收方所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的。因此,UDP协议更类似于普通邮政服务,寄信人不能够保证所寄出去的信能够被收信人及时收到,后发出的信也许会比先发出的信更早到达。

    而UDP广播就是建立于UDP协议上的数据传输,当网络中的某一台机向交换机或路由发送一个广播数据时,交换机或路由则会帮我们将此广播数据发送到其节点下的所有接收者.交换机或路由在此时就有点类似于"大喇叭".只要我们向"大喇叭"喊一句话(发送一个消息),它就会向所有"听众"传送过去(嗯,聊天室就是如此).

    从上可知,当我们做一个基于UDP广播的聊天室程序时,所以我们就不需要任何的服务端程序做数据中转(因为我们已有交换机或路由帮我们广播了),只要是在同一个网络下就可以加入我们的聊天室.

    程序主要由两个模块组成,ChatServer与ChatClient.
    ChatServer : 聊天服务端,别被名字误会,它的功能主要是用于接收广播数据.比如其它人发送的聊天内容我们就是通过其进行接收的.
    ChatClient  : 联系客户端,它的主功主要是用于发送广播数据,比如我们的聊天内容就是通过其发送的.


    ChatServer的原理:
    当启动ChatServer服务时,ChatServer将会在本地监听一个端口(默认为65432),并加入到"224.224.224.224"广播组.在这里大家要注意,"224.224.224.224"只是一个广播组标识,并不是网络上的某台机,也就是说这个IP地址并不存在的.这样做的目的,主要是向交换机或路由申请将你的机注册为"224.224.224.224"广播组成员,这样你才可以接收广播消息.也许你会问这个IP地址是怎么来的?这是因为多路广播地址的范围是224.0.0.0 到239.255.255.255之间,所以我们可以从中取一个地址给我们的程序用即可.当加入到广播组后ChatServer将进入异步接收数据过程,并在接收到有数据时通过事件通知上一级进行处理.

    ChatClient的原理:
    ChatClient比较简单,它只是用于发送广播数据,也就是将数据发送到广播组"224.224.224.224"中.

    以下是应用程序的简单界面.



    源码下载:
    你可以自由的对源码进行任何修改.但请不要删除我的标识.谢谢:)
    /Files/kingthy/UDPChatRoom.rar

  • 相关阅读:
    java Thread之ThreadLocal(线程局部变量)
    java设计模式之接口隔离原则(ISP)
    java设计模式之开放关闭原则(OCP)
    java设计模式之迪米特法则(LoD)
    java设计模式之单一职责原则(SRP)
    android点滴(25)之 originalpackage
    VC 注册表操作
    java设计模式之依赖倒置原则(DIP)
    DFT 离散傅里叶变换 与 补零运算
    序列循环移位
  • 原文地址:https://www.cnblogs.com/kingthy/p/1206457.html
Copyright © 2011-2022 走看看