通过DatagramSocket类来实现。此类表示用来发送和接收数据报包的套接字。

发送端代码如下:

 import java.io.IOException;
import java.net.*;
import java.util.Scanner; public class Send implements Runnable{
@Override
public void run() {
//创建一个发送消息的套接字
DatagramSocket sendSocket = null;
try {
sendSocket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
while (true) {
try {
System.out.println("发送端发送消息");
Scanner sc = new Scanner(System.in);
String msg = sc.next(); byte [] bytes = msg.getBytes();//发送的内容转化为字节数组
InetAddress ip = InetAddress.getByName("192.168.31.169");//接受内容的Ip地址 //创建要发送的数据包,然后用套接字发送
DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,ip,8080);
//用套接字发送数据包
sendSocket.send(datagramPacket); } catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args){
Send s = new Send();
Thread thread = new Thread(s);
thread.start();
}
}

接收端代码如下:

 import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException; public class Receive implements Runnable {
@Override
public void run() {
System.out.println("接收端");
//创建接受消息的套接字
DatagramSocket receviceSocket = null;
try {
receviceSocket = new DatagramSocket(8080);
} catch (SocketException e) {
e.printStackTrace();
}
while (true) {
try {
byte [] bytes = new byte[2048];
//创建一个数据包来接受消息
DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);
//用套接字接受数据包
receviceSocket.receive(datagramPacket);
//得到发送端的ip地址对象
InetAddress ip = datagramPacket.getAddress();
//将接受到的消息转换为字符串
String rec = new String(datagramPacket.getData()) ;
System.out.println(ip.getHostAddress()+"发送的消息为:"+rec); } catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
Receive r = new Receive();
Thread thread = new Thread(r);
thread.start();
}
}

因为要一直接受消息和发送消息,故用了while循环。

注意事项:发送端的端口要和接收端的端口保持一致。  

这里我接受消息的ip地址设置为自己的ip地址来演示实际效果。

Java中使用UDP实现简单的聊天功能的更多相关文章

  1. Java中的UDP协议编程

    一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...

  2. 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)

    1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...

  3. java中Color类的简单总结

    java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...

  4. 《Java中的自动装箱和拆箱功能.》

    //Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...

  5. Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能

    本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...

  6. Udp实现简单的聊天程序

    在<UDP通讯协议>这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据 这里将用Udp协议技术,编写一个简单的聊天程序: //发送端: package com.shindo.j ...

  7. Java中的UDP应用

    我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称 ...

  8. android中实现简单的聊天功能

    这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~ 主要还是展示RecyclerView控件的使用吧~ 参考我之前写的文章: android中RecyclerView控件的使用 andr ...

  9. 采用tcp协议和UDP协议实现简单的聊天功能

    Date: 2019-06-19 Author: Sun 一. Python3输出带颜色字体 实现过程: ​ 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. ​ 转义 ...

随机推荐

  1. Docker小记 — Docker Engine

    前言 用了Docker方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker详细说明可查阅"官方文档".本篇为Docker Engine ...

  2. python爬虫(2)——编写一个爬虫

    一.URL的编码与解码 在python2中包含的urllib和urllib2,都是接受URL请求相关的模块.但是在python3中,却没有urllib2.实际上urllib2的功能在python3中可 ...

  3. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

  4. React项目模板-从项目搭建到部署

    前一段时间做了一个小项目,时间比较紧,就一个人月.最终希望能够通过微信公众号链接启动应用. 项目的业务细节就不多说了,主要是想分享一下做这个项目技术方面的一些经验. 技术选型 参考范围大致三种:Ang ...

  5. python学习:设计一个算法将缺失的数字找出来。

    算法题   已知整型数值 a[99], 包含的所有99个元素都是从1-100中随机取值,并且这99个数两两互不相等,也就是说从1到100这100个数字有99个在数值内,有一个缺失.请设计一个算法将缺失 ...

  6. 用户不在sudoers 文件中。此事将被报告 or (usermod:“sudo”组不存在)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 异常处理汇总-服 务 器 http://www.cnblogs.com/dun ...

  7. laravel框架基础知识点

    一.数据库:DB    1.db查    DB::table('msg')->where('id','>',$id)->get()       查询单行    DB::table(' ...

  8. tox环境安装

    ubuntu 下安装tox环境 1.apt-get install pip 2.pip install tox 3.git git clone https://github.com/openstack ...

  9. Python接口自动化测试 HTTP协议

    一.HTTP协议简述 二.URL 三.请求 四.响应 五.消息报头 六.常见问题

  10. Ansible自动化运维笔记1(安装配置)

    1.Ansible的安装 pip install ansible==1.9.1 ansible1.9.1版本依赖的软件有 Python2.6以上版本 paramiko模块 PyYAML Jinja2 ...