Java中使用UDP实现简单的聊天功能
通过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实现简单的聊天功能的更多相关文章
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...
- java中Color类的简单总结
java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...
- 《Java中的自动装箱和拆箱功能.》
//Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...
- Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能
本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...
- Udp实现简单的聊天程序
在<UDP通讯协议>这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据 这里将用Udp协议技术,编写一个简单的聊天程序: //发送端: package com.shindo.j ...
- Java中的UDP应用
我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称 ...
- android中实现简单的聊天功能
这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~ 主要还是展示RecyclerView控件的使用吧~ 参考我之前写的文章: android中RecyclerView控件的使用 andr ...
- 采用tcp协议和UDP协议实现简单的聊天功能
Date: 2019-06-19 Author: Sun 一. Python3输出带颜色字体 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义 ...
随机推荐
- IO&&Serize 利用线程Thread.Sleep实现"自动输出"
查看链接 https://github.com/jungle8884/C-.Net/tree/MyClassLibrary using System; using System.Collections ...
- 运行自己的 DaemonSet - 每天5分钟玩转 Docker 容器技术(131)
本节以 Prometheus Node Exporter 为例演示如何运行自己的 DaemonSet. Prometheus 是流行的系统监控方案,Node Exporter 是 Prometheus ...
- [Python Study Notes]实现对鼠标控制
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- CentOS利用Nginx+Docker部署.netcore应用
安装docker 官方文档https://docs.docker.com/engine/installation/linux/docker-ce/centos/ [root@sn ~]# yum re ...
- LIMS系统仪器数据采集-使用xpdf解析pdf内容
不同语言解析PDF内容都有各自的库,比如Java的pdfbox,.net的itextsharp. c#解析PDF文本,关键代码可参考: http://www.cnblogs.com/mahongbia ...
- 关于c++栈溢出的问题
我自己定义了一个数据类型node,嵌套在另一个数据类型当中时候,用到了delete函数, 在我node的声明当中声明了几个指针 在我的析构函数中却调用了delet函数 结果程序结果是能跑出来 提示我栈 ...
- 关于HTTP,你知道哪些?
HTTP简介 HTTP 的全称是 Hypertext Transfer Protocol,超文本传输协议 规定客户端和服务器之间的数据传输格式 让客户端和服务器能有效地进行数据沟通 HTTP 协议是网 ...
- uva10603 倒水问题
状态搜索.类似八数码问题 AC代码 #include<cstdio> #include<queue> #include<cstring> #include<a ...
- java网络编程(2)——UDP与TCP
首先,先介绍这两种协议: UDP:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互 ...
- 编码问题 php字符编码转换类
各种平台和软件打开显示的编码问题,需要使用不同的编码,根据我们不同的需求. php 字符编码转换类,支持ANSI.Unicode.Unicode big endian.UTF-8.UTF-8+Bom ...