-------------------------------------------------java用UDP作简易聊天室----------------------------------------------------

/**

* 服务端

* @author李昆鹏

*

*/

public   class UDPServer implements Runnable{

//指定端口

private  int  port;

public  int getPort() {

return  port;

}

public  void setPort(intport) {

this.port = port;

}

public UDPServer(int  port) {

super();

this.port = port;

}

@Override

public  void run() {

DatagramSocket ds = null;

try {

//创建UDP服务端的对象,必须指定端口

//端口最好指定在一万以上,因为八千之前的端口很多都被占用了

ds = new  DatagramSocket(port);

//定义接收的字节数组

byte[] bs = new  byte[1024];

System.out.println("服务器已经启动");

while(true) {

//定义接收数据包

DatagramPacket dp = new DatagramPacket(bs, bs.length);

//数据包的接收

ds.receive(dp);

//获得发生端的IP

InetAddress ia = dp.getAddress();

//获得数据包中的数据,这个数组的长度是我们自己定义的长度(1024)

byte[] bs1 = dp.getData();

//或得接收数据的长度(实际接收到数据的长度)

int  len = dp.getLength();

//组装接收到的数据

String data = new String(bs1,0,len);

//退出程序

if("exit".equals(data)) {

System.out.println("服务端已退出");

break;

}

System.out.println(ia.getHostAddress()+"说:\r\n"+data);

}

} catch (Exception e) {

e.printStackTrace();

}   finally {

//关闭服务端

if(ds != null)

ds.close();

}

}

}

-----------------------------------------------

/**

* 客服端

* @author李昆鹏

*

*/

public  class UDPClient implements Runnable {

//发送目标的IP

private String ip;

public UDPClient(String ip, int  port) {

super();

this.ip = ip;

this.port = port;

}

//发送端口

private  int  port;

@Override

public  void run() {

DatagramSocket ds = null;

BufferedReader br = null;

try {

//创建控制台的输入流对象

br = new BufferedReader(new InputStreamReader(System.in));

//创建客服端端接收对象

ds = new  DatagramSocket();

System.out.println("已经接入" + ip);

while (true) {

System.out.println("请输入你要发送的内容:");

//读取控制台输入的数据并且转换成字节数组

byte[] bs = br.readLine().getBytes();

//创建要发送的目的地的IP对象

InetAddress ia = InetAddress.getByName(ip);

//指定数据包

//第一个参数是打包的字节数组,第二个参数是要打包的字节长度

//第三个参数是要发送的IP对象,第四个参数是要发送的服务端

DatagramPacket dp = new DatagramPacket(bs, bs.length,ia,port);

//发送

ds.send(dp);

System.out.println("我说:\r\n" + new String(bs,0,bs.length));

//退出程序

if("exit".equals(new String(bs,0,bs.length))) {

System.out.println("客服端已退出");

break;

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if(ds != null)

ds.close();

try {

if( br != null)

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

-----------------------------------------------------------

/**

* 聊天室

* @author李昆鹏

*

*/

public  class ChatRoom {

public  static  void main(String[] args) {

//创建接收端对象的线程的实现

UDPClient uc = new UDPClient("192.168.1.104", 10000);

//创建服务端

UDPServer us = new   UDPServer(10001);

//发送端的线程

Thread t = new Thread(uc);

//接收端的线程

Thread t1 = new Thread(us);

//启动线程

t.start();

t1.start();

}

}

java用UDP作简易聊天室相关推荐

  1. java毕业设计——基于java+TCP+UDP的局域网聊天室系统设计与实现(毕业论文+程序源码)——局域网聊天室系统

    基于java+TCP+UDP的局域网聊天室系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+TCP+UDP的局域网聊天室系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  2. Java WebSocket编程与网页简易聊天室

    在webSocket还未引入前,许多开发人员通过各种非正规手段来完成更新网站的最新信息和到所有当前访问者的任务,其中一种手段就是通过浏览器向服务器轮询更新,但这种手段的网络延迟比较明显,其用户体验比较 ...

  3. 2020暑假集训项目——Java简易聊天室

    经过一周的学习与搬砖,我成功的完成了暑假集训的第一个项目--Java简易聊天室,这里对整个项目做一个总结.(文末附下载地址) 本项目支持的功能: 1.可同时开启多个客户端进行多人聊天: 2.可与在线的 ...

  4. 网络编程之java简易聊天室实现

    最近浅学习了一些关于网络编程方面的知识,视频是跟着狂神学习的,可能学习的不是很深 说到网络,相信大家都对TCP.UDP和HTTP协议这些都不是很陌生,学习这部分应该先对端口.Ip地址这些基础知识有一定 ...

  5. java聊天室程序_Java简易聊天室程序socket

    Java简易聊天室程序socket chatroomdemo.java package com.socket.demo; import java.io.IOException; import java ...

  6. Java网络编程,使用Java实现UDP和TCP网络通信协议,以及基于UDP的在线聊天室。

    文章目录 前言 一.网络编程概念 1.网络 2. 网络编程的目的 3.想要达到这个效果需要什么 4.网络分层 二.网络编程Java类 1.IP地址:InetAddress 2.端口 3.TCP连接 3 ...

  7. 连夜撸了一个简易聊天室

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 分不清轮询.长轮询?不知道什么时候该用websocket还 ...

  8. 撸一个简易聊天室,不信你学不会实时消息推送(附源码)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐 19 个 github 超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 分不清轮询.长轮询? ...

  9. Socket编程实现简易聊天室

    1.Socket基础知识 Socket(套接字)用于描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发出请求或者应答网络请求. Socket是支持TCP/IP协议的网络通信的基本 ...

最新文章

  1. centos vim 安装插件本质研究
  2. struct的初始化
  3. 数据库阻塞---SQL的隔离级别
  4. git bash卡顿解决
  5. pycharm镜像源_pycharm安装第三方库
  6. php 导出excel类,php 导出excel类
  7. PyQt5+PIL模块实现图片批量处理器
  8. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
  9. Python实战之Selenium自动化测试web刷新FW
  10. XML的DTD和Schema约束
  11. MVC4 Model ValueProvider
  12. android singleInstance 和 singleTask 的区别
  13. 17 CoCos Creator-Node Tree 层级管理器
  14. CVPR 2021 Oral | 妙啊!不怕遮挡的图像线段匹配 SOLD2,还能联合自监督线段检测
  15. android studio 报错Permission is only granted to system apps
  16. echart实现地球外环绕卫星效果
  17. 微软编程规范(文档)
  18. office常用的快捷键
  19. deepin 20安装后系统没有声音解决方案(亲测有效)
  20. Twitter账号总被关联封号? 如何解决?

热门文章

  1. 灵动微电子MM32F0010A,替换STM32芯片,keil工程建立
  2. 神经网络图用什么软件做,如何绘制神经网络图
  3. Android第三方登陆之QQ篇(原生登陆授权)
  4. Hive勒索攻击者从全球1300多家企业勒索1亿美元
  5. html动态添加图片不显示不出来,解决 viewer.js 动态更新图片导致无法预览的问题...
  6. 流氓软件综述篇:安全史上“最牛钉子户”
  7. 张文宇 小型微型计算机系统,车载式小型无人机气动力与动力特性试验测量方法及装置...
  8. 副业怎么赚到钱?有哪些能赚钱的副业?
  9. 手机计算机隐藏功能怎么用,手机隐藏功能大全
  10. markdown 写微信公众号,排版交给 mdnice