UDP:
无连接协议
udp协议发送数据,用的是数据报包的形式。(64KB以内)
 
 
发送端:
1.定义发送的datagramsocket对象,发送端可以不用定义端口
2.定义封装数据包datagrampacket
3.发送数据包
4.关闭资源
 
//InetAddress.getByName("192.168.3.255")必须是统一的网段
 
public class UdpSendThread implements Runnable {

	DatagramSocket ds;
byte[] buf; public UdpSendThread(DatagramSocket ds) {
this.ds = ds;
} public UdpSendThread(DatagramSocket ds, String str) { this.ds = ds;
this.buf = str.getBytes();
} @Override
public void run() { String brStr;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "utf-8")); while ((brStr = br.readLine()) != null) { if(brStr.startsWith("@")){ } DatagramPacket dp = new DatagramPacket(brStr.getBytes(), brStr.getBytes().length,
InetAddress.getByName("192.168.3.255"), 9000); ds.send(dp);
if (brStr.equals("over")) {
break;
} } //br.close();
ds.close();
} catch (UnknownHostException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

  

接收端:
1、建立DatagramSocket对象
2、定义一个空的数据包
3、接受数据包
4、解析数据包
5、关闭资源
public class UdpRececiveThread extends Thread {

	DatagramSocket ds;

	public UdpRececiveThread(DatagramSocket ds) {

		this.ds = ds;
} @Override
public void run() { while(true){
byte[] buf = new byte[1024*1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length); try {
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String content = new String(dp.getData(),0,dp.getLength());
if(content.equals("over")){
System.out.println(ip+"退出");
} System.out.println(ip+":"+content); } catch (IOException e) {
e.printStackTrace();
} }
}
}

  测试类:

	public static void main(String[] args) throws SocketException {

		DatagramSocket sendDs = new DatagramSocket();
DatagramSocket reDs = new DatagramSocket(9000);
new Thread(new UdpSendThread(sendDs)).start();;
new UdpRececiveThread(reDs).start();
}

  

udp 局域网群聊的更多相关文章

  1. java 网络编程之UDP通信和简单的群聊程序

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. JAVA 网络编程 - 实现 群聊 程序

    在实现 这个 程序之前, 我们 需要 了解 一些 关于 Java 网络 编程 的 知识. 基本 的 网络知识: 网络模型 OSI (Open System Interconnection 开放系统互连 ...

  3. Java-->实现群聊功能(C/S模式--TCP协议)

    --> Java 对TCP协议的支持: --> java.net包中定义了两个类ServerSocket 和Socket ,分别用来实现双向连接的server 端和client 端. -- ...

  4. 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践

    本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io.应作者要求,如需转载,请联系作者获得授权. 一.引言 ...

  5. 群聊(udp)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  6. UDP局域网通信的Java实现及Android平台尝试

    局域网通信已经很少被他人所提及了,我曾经还尝试过通过蓝牙构建通信网络,这次有机会尝试UDP局域网通信,在这里把一些基本过程和在Android平台上的问题记录一下. 1. UDP基础知识 1.1 什么是 ...

  7. [Python 网络编程] TCP编程/群聊服务端 (二)

    群聊服务端 需求分析: 1. 群聊服务端需支持启动和停止(清理资源); 2. 可以接收客户端的连接; 接收客户端发来的数据 3. 可以将每条信息分发到所有客户端 1) 先搭架子: #TCP Serve ...

  8. java基于socket的网络通信,实现一个服务端多个客户端的群聊,传输文件功能,界面使用Swing

    最近在复习java的io流及网络编程.但复习写那些样板程序总是乏味的.便准备写个项目来巩固.想来想去还是聊天项目比较好玩.如果日后完成的比较好自己也可以用(哈哈哈).并且自己后面也要继续巩固java多 ...

  9. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

随机推荐

  1. python教程(七)·字典

    本文介绍本系列教程最后一个数据结构--字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思.而python中的字典也是类似的,根据特定的 "键"(单词)来查找 &quo ...

  2. Python 爬虫 多进程清洗代理

    利用多线程检测代理网站提供的免费代理是否可用 import requests from lxml import etree import time import multiprocessing def ...

  3. C++ —— 类中static和const关键字声明变量的初始化方式总结

    在类中声明变量/常量时,经常会用到static.const关键字.对于该变/常量的初始化问题,网上有许多相关文章,但是大多不够完善,或者存在错误.经过实际验证,总结如下: (注明:测试编译平台为VS2 ...

  4. poj 2079(旋转卡壳求解凸包内最大三角形面积)

    Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 9060   Accepted: 2698 Descript ...

  5. MySQL入门篇(七)之Xtrabackup备份与恢复

    一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...

  6. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

  7. cogs2223 [SDOI2016 Round1] 生成魔咒

    cogs2223 [SDOI2016 Round1] 生成魔咒 原题链接 题解 暴力:每次更新后缀数组??? set+二分+hash暴力 http://paste.ubuntu.com/2549629 ...

  8. Spring中的TransactionProxyFactoryBean作用及配置(转)

    问: 原文链接 http://blog.csdn.net/cpp_lzth/article/details/6551703 看AOP的时候发现spring中有个org.springframework. ...

  9. ubuntn 安装软件

    安装输入法 一.Ctrl+Alt+T打开终端,输入sudo apt-get install fcitx,安装fcitx插件. 二.打开input method,选择fcitx. 三.打开system ...

  10. python程序设计——面向对象程序设计:继承

    继承是为代码复用和设计复用而设计的 在继承关系中,已有的.设计好的类称为父类或基类,新设计的类为子类或派生类 派生类可以继承父类的公有成员,但不能继承其私有成员 如果需要在派生类中调用基类的方法,可以 ...