Java简易聊天室程序socket

chatroomdemo.java

package com.socket.demo;

import java.io.IOException;

import java.net.DatagramSocket;

public class ChatRoomDemo {

/**

* @param args

* @throws IOException

*/

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

System.out.println("----进入聊天室----");

DatagramSocket send = new DatagramSocket();

DatagramSocket rece = new DatagramSocket(10001);

new Thread(new SendDemo(send)).start();// 启动发送端线程

new Thread(new ReceiveDemo(rece)).start();// 启动接收端线程

}

}

SendDemo.java

package com.socket.demo;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class SendDemo implements Runnable {

private DatagramSocket ds;

// 有参数构造函数

public SendDemo(DatagramSocket ds) {

this.ds = ds;

}

@Override

public void run() {

try {

BufferedReader bufr = new BufferedReader(new InputStreamReader(

System.in));

String line = null;

while ((line = bufr.readLine()) != null) {

byte[] buf = line.getBytes();

/*

* //192.168.1.255是ip段广播地址,发给这个IP的信息,

* 在192.168.1.1-192.168.1.255的ip段的所有IP地址都能收到消息

*/

DatagramPacket dp = new DatagramPacket(buf, buf.length,

InetAddress.getByName("192.168.1.255"), 10001);

ds.send(dp);

if ("886".equals(line))

break;

}

ds.close();

} catch (Exception e) {

}

}

}

ReceiveDemo.java

package com.socket.demo;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

public class ReceiveDemo implements Runnable {

private DatagramSocket ds;

public ReceiveDemo(DatagramSocket ds) {

this.ds = ds;

}

@Override

public void run() {

try {

while (true) {

// 2,创建数据包。

byte[] buf = new byte[1024];

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

// 3,使用接收方法将数据存储到数据包中。

ds.receive(dp);// 阻塞式的。

// 4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。

String ip = dp.getAddress().getHostAddress();

int port = dp.getPort();

System.out.println("----port-----" + port);

String text = new String(dp.getData(), 0, dp.getLength());

System.out.println(ip + "::" + text);

if (text.equals("886")) {

System.out.println(ip + "....退出聊天室");

}

}

} catch (Exception e) {

}

}

}

运行效果图:

java聊天室程序_Java简易聊天室程序socket相关推荐

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

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

  2. java聊天室测试_Java网络聊天室实训能力测试

    1填空题(2*12=24,每空2分).1)C/S结构是指___客户机/服务器_____,请例举除网络聊天室之外的基于C/S结构的应用程序____________________.2)套接字(socke ...

  3. 纯JAVA模拟、实现QQ简易聊天互动程序

    实现的功能.步骤: 1.定义JFrame窗体中的组件 2.在构造方法中初始化窗体的组件 3.使用网络编程完成数据的传输(TCP,UDP协议) 4.实现发送按钮的监听点击事件 5.实现回车键发送数据 功 ...

  4. java简单小程序_Java简易登录注册小程序

    这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...

  5. java体重指数计算器程序_java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明需要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  6. java 计算器 小程序_java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  7. java怎么实现购物车_java实现网上购物车程序

    导读热词 用java代码写一个简单的网上购物车程序,供大家参考,具体内容如下 需求: 1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性. 2.写一个商品条目信息类,有商品和数量两个属性, ...

  8. java抽奖程序_java模拟一个抽奖程序

    今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序 * 需要使用Java的图形界面知识 * 窗口  JFrame * 面板  JPanel * 显示文本信息的标签  JLabel * 文 ...

  9. java抽奖窗口程序_java模拟一个抽奖程序

    今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序 * 需要使用Java的图形界面知识 * 窗口  JFrame * 面板  JPanel * 显示文本信息的标签  JLabel * 文 ...

最新文章

  1. Mysql Explain 详解
  2. mysql的远程链接工具_Navicat远程链接mysql-8数据库具体操作
  3. Apache的压缩与缓存-----网页优化
  4. 最大排列问题的算法实现(Python)究竟最后调换位置的有哪几个?
  5. 字符串转换整形数,结构体数组排序
  6. 工作283:从字典表获取数值
  7. c++_导入/导出excel文件
  8. docker 镜像修改的配置文件自动还原_所以到底该如何修改 docker 容器的端口映射!!!...
  9. FreeRTOS内核实现02:任务的定义与任务切换
  10. c语言 如何调用void函数,在C中从main调用void*函数
  11. JS函数之间的调用(函数内调用一个函数、调用函数内部的函数)
  12. C语言——判断一个数字是否为质数(素数)!
  13. uni小程序底线(没有更多)
  14. 中科大凸优化P345678 Chapter2Conve Set
  15. 用苹果电脑开发Android应用,MAC OS Android Studio环境安装
  16. 小波变换完美通俗讲解系列之 (一)
  17. SQL语句的一个面试题目
  18. SimpleMind Pro中文版
  19. Linux-环境变量配置
  20. Linux 与硬体的搭配

热门文章

  1. linux下文件描述符的介绍
  2. 如何使用C来扩展python功能。
  3. pytorch GPU版本安装 win10
  4. Matlab对话框总结
  5. 云炬随笔20180607
  6. 微信朋友圈+html+字体,一键修改微信朋友圈字体,快来试试吧
  7. Go进阶(7): JSON 序列化和反序列化
  8. 形变立体跟踪-基于稠密运动估计和力学仿真(1)
  9. VTK修炼之道26:图像基本操作_三维图像切片提取
  10. 调用webservice时提示对操作的回复消息正文进行反序列化时出错