-------------------------------------------------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. 关于正则表达式 \1 \2之类的问题
  2. easyui中的datetimebox 只显示年月日_设置Win10任务栏显示星期几方法
  3. Android中URI的格式
  4. 苹果发明超薄触摸显示技术:iPhone 12系列有望首发搭载
  5. [转]Java8 Lambda表达式教程
  6. mvp+dagger2_Android MVP + Dagger2 +改造+ RxJava
  7. 豪华版飞机大战系列(三)
  8. 电脑如何录制正在播放的视频 这个方法太简单了
  9. 分享5个苹果系统超实用的黑科技APP,个个都是精品
  10. 上海电信宽带自助修复服务器,家庭网络故障自助修复法
  11. revit2019 导出obj_Revit导出OBJ格式
  12. win7 摄像头驱动软件找不到,只有sys文件
  13. 计算机图形学(闫令琪博士课程答疑)-Shading(二)
  14. HTML期末学生大作业:中华传统文化【苏绣手工艺】带psd设计图(15页)
  15. 自行车码表CPU选型
  16. TableauとSFDCデータ整理
  17. SQL的常见函数的使用方法和举例说明
  18. Android imageview 圆形头像
  19. 3、Java 的变量和数据类型
  20. 如何进行文献检索和阅读(转)

热门文章

  1. Tomcat虚拟主机管理员登录(报错问题解决)
  2. 常用套接字选项(SOL_SOCKET级别)
  3. 2018省市区最新数据(国家统计局最新数据-自取)
  4. 如何 DIY 一个自己的 NAS
  5. MOOG伺服阀G631-3008B
  6. VMware Player 与 Device/Credential Guard 不兼容
  7. 关于人工智能中的机器学习与深度学习
  8. 《Python编程:从入门到实践》项目1:外星人入侵(完整版)
  9. 有一口深度为high米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬up米,夜里则顺井壁向下滑down米,青蛙从某个早晨开始向外爬,对于任意指定的high、up和down值(均为自然数),计算青
  10. 用鼠标关闭计算机步骤,win10系统电脑鼠标键盘设置快速关机怎么操作