javaudp聊天室(如何用Java编写一个聊天室程序,可以支持单聊和多聊)

2025-03-19 17:30:01 0

javaudp聊天室(如何用Java编写一个聊天室程序,可以支持单聊和多聊)

本文目录

如何用Java编写一个聊天室程序,可以支持单聊和多聊

聊天程序又叫即时通讯系统分类两部分:客户端和服务端客户端:用户聊天的界面服务端:接收消息并转发到指定用户其中服务端和客户端用tcp或者udp连接,使用socket编程完成通信。按着这个思路可以开发出一套聊天程序客户端常用界面 bs版本的又layim服务端 openfire或者自己实现

用java语言实行一个UDP聊天室 多客户 无图形用户界面

这是很久以前在网上找的,略作修改的一个小案例UDP聊天的,供你参考,改改里面的ip地址。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public class UDPClient { public static void main(String args) throws IOException { new UDPClient().go(); } private void go() { ClientSendThread send = new ClientSendThread(); new Thread(send).start(); ClientRecvThread recv = new ClientRecvThread(); new Thread(recv).start(); } class ClientSendThread implements Runnable { @Override public void run() { try { DatagramSocket ds = new DatagramSocket(); String str = ““; byte buf = null; while (true) { System.out.println(“请输入》“); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); str = br.readLine(); if (“bye“.equals(str)) break; buf = str.getBytes(); // System.out.println(“-----buf.length-------“ + buf.length); DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress(“127.0.0.1“, 5678)); ds.send(dp); buf = null; } ds.close(); } catch (IOException e) { e.printStackTrace(); } } } class ClientRecvThread implements Runnable { @Override public void run() { byte buf = new byte; //接收端的端口需要指定,不然发送端不知道向哪个端口发送数据包 DatagramSocket ds; try { ds = new DatagramSocket(5679); String message = ““; DatagramPacket dp = null; while(true){ dp = new DatagramPacket(buf, buf.length); ds.receive(dp); message = new String(buf,0,dp.getLength()); System.out.println(“接收到Server端信息为:“+message); } } catch (IOException e) { e.printStackTrace(); } } } }import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public class UDPServer { public static void main(String args) throws IOException { new UDPServer().go(); } private void go() { //服务端启动2个线程,1个发送,1个接收 ServerSendThread send = new ServerSendThread(); new Thread(send).start(); ServerRecvThread recv = new ServerRecvThread(); new Thread(recv).start(); } // 服务端发送线程 class ServerSendThread implements Runnable{ @Override public void run() { try { DatagramSocket ds = new DatagramSocket(); String str = ““; byte buf = null; while (true) { System.out.println(“请输入》“); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); str = br.readLine(); if (“bye“.equals(str)) break; buf = str.getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress(“192.163.20.61“, 5679)); ds.send(dp); buf = null; } ds.close(); } catch (IOException e) { e.printStackTrace(); } } } // 服务端接收线程 class ServerRecvThread implements Runnable{ @Override public void run() { byte buf = new byte; //接收端的端口需要指定,不然发送端不知道向哪个端口发送数据包 DatagramSocket ds; try { ds = new DatagramSocket(5678); String message = ““; while(true){ DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp); message = new String(buf,0,dp.getLength()); System.out.println(“接收到Client端的信息为:“+message); } } catch (IOException e) { e.printStackTrace(); } } } }

java UDP 实现 多人聊天

UDP也可以和TCP那样遍历list然后发送啊客户端向外面开一个UDP端口接受数据报然后服务器这边要是有消息要发送就直接发送数据报包就可以了嘛UDP都不用保持着连接的,比TCP还简单些另外也可以用组播来实现,搜索下java UDP 组播,你能找到不少实例性的代码,也有聊天室的代码

我想用java中的udp做聊天工具怎么连接局域网两台电脑,举出具体事例,有代码的

首先确定两台电脑都在同一个局域网。两台电脑都要装有java的运行环境,(直接两台电脑都装jdk吧 ,jre也是可以的)把代码分别拷贝到两台电脑上,假如用你的电脑做服务器,另一台电脑做客户端,先起你电脑的服务器,再在你电脑起一个客户端,然后在另一台电脑上再起一个客户端,这样两台电脑的客户端就可以通讯了。注意:另一台电脑代码上面的IP地址要正确真上你电脑的IP地址不懂的再继续问

急求一个关于UDP的JAVA实现多人聊天源代码

import java.io.InputStream; import java.io.DataInputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.DataOutputStream; import java.io.BufferedReader; import java.net.ServerSocket; import java.net.Socket; import java.io.IOException; import java.util.Date; class Server { public Server() { try { ServerSocket s=new ServerSocket(8888); Socket ss=s.accept(); OutputStream out=ss.getOutputStream(); DataOutputStream dout=new DataOutputStream(out); InputStream in=ss.getInputStream(); DataInputStream din=new DataInputStream(in); System.out.print(din.readUTF()+“!“); dout.writeUTF(“你已经连接到服务器“+“\t“+“你的地址:“+ss.getInetAddress()+“\t“ +“你的链接端口:“+ss.getLocalPort()+“\n“); new ReadMessage(din).start(); new SendMessage(dout).start(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String args) { new Server(); } } //接受客户端信息 class ReadMessage extends Thread { private DataInputStream din; public ReadMessage(DataInputStream din) { this.din=din; } public void run() { String str; try { while (true) { str=din.readUTF(); System.out.println(new Date().toLocaleString()+“客户端说:“+str); if (str.equals(“bye“)) { System.out.println(“客户端下线!“); break; } } } catch (IOException e) { e.printStackTrace(); } } } // 发出服务器信息 class SendMessage extends Thread { private DataOutputStream dout; public SendMessage(DataOutputStream dout) { this.dout=dout; } public void run() { InputStreamReader inr=new InputStreamReader(System.in); BufferedReader buf=new BufferedReader(inr); String str; try { while(true) { str=buf.readLine(); dout.writeUTF(str); if (str.equals(“bye“)) { System.out.println(“服务器退出!“); System.exit(1); } } } catch (IOException e) { e.printStackTrace(); } } } import java.io.InputStream; import java.io.DataInputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.DataOutputStream; import java.io.BufferedReader; import java.net.Socket; import java.io.IOException; import java.util.Date; class Client { public Client() { try { Socket s=new Socket(“192.168.1.2“,8888); InputStream in=s.getInputStream(); DataInputStream din=new DataInputStream(in); OutputStream out=s.getOutputStream(); DataOutputStream dout=new DataOutputStream(out); dout.writeUTF(“服务器你好!我是客户端“); System.out.println(din.readUTF()); new Thread(new SenderMessage(dout)).start(); new Thread(new ReaderMessage(din)).start(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String args) { new Client(); } } class ReaderMessage implements Runnable { private DataInputStream din; public ReaderMessage(DataInputStream din) { this.din=din; } public void run() { String str; try { while(true) { str=din.readUTF(); System.out.println(new Date().toLocaleString()+“服务器说:“+str); if (str.equals(“bye“)) { System.out.println(“服务器已经关闭,此程序自动退出!“); break; } } } catch (IOException e) { e.printStackTrace(); } } } class SenderMessage implements Runnable { private DataOutputStream dout; public SenderMessage(DataOutputStream dout) { this.dout=dout; } public void run() { String str; InputStreamReader inf=new InputStreamReader(System.in); BufferedReader buf=new BufferedReader(inf); try { while (true) { str=buf.readLine(); dout.writeUTF(str); if (str.equals(“bye“)) { System.out.println(“客户端自己退出!“); System.exit(1); } } } catch (IOException e) { e.printStackTrace(); } } }

javaudp聊天室(如何用Java编写一个聊天室程序,可以支持单聊和多聊)

本文编辑:admin

更多文章:


click15杨策出什么事了(杨策为什么退出click15)

click15杨策出什么事了(杨策为什么退出click15)

本文目录杨策为什么退出click15杨策和ricky出什么事了click15杨策出什么事了click15解散原因是什么《乐队的夏天》click15的杨策为什么这么招人喜欢他是个什么样的人《披荆斩棘的哥哥》里有RICKY,click15解散了

2025年2月21日 13:10

asp毕业设计源代码(ASP毕业设计)

asp毕业设计源代码(ASP毕业设计)

本文目录ASP毕业设计那位好心人有asp的毕业设计源码加论文,可以发给我参考一下吗,网名块毕业答辩了ASP做毕业设计!!!求 毕业设计 ASP+SQL 全的源码 学生信息管理系统!ASP毕业设计介绍本书你参考一下吧,相信对你的设计帮助会很大

2025年2月12日 17:40

colspan的用法(html中colspan什么意思)

colspan的用法(html中colspan什么意思)

本文目录html中colspan什么意思easyui datagrid 的 rowspan怎么用表格的使用方法,需要文字格式的html中关于td使用colspan的问题colspan rowspan 能一起使用吗html中colspan什么

2025年3月12日 13:30

thumbdata(.thumbdata3-1763508120是什么文件)

thumbdata(.thumbdata3-1763508120是什么文件)

本文目录.thumbdata3-1763508120是什么文件怎么打开thumbdata文件手机里的thumbdata是什么.thumbdata3-1763508120是什么文件是媒体存储的缓存文件。.thumbdata3- 开头的文件和.

2025年3月2日 00:20

oracle数据库客户端安装(怎样安装oracle数据库服务器)

oracle数据库客户端安装(怎样安装oracle数据库服务器)

本文目录怎样安装oracle数据库服务器oracle12g数据库怎么安装怎么安装oracle的客户端oracle数据库和客户端有安装顺序吗如何在windows系统上安装oracle数据库怎样安装oracle数据库服务器1找台服务器,安装or

2025年2月26日 15:40

delphi 安卓(大家觉得用delphi 开发安卓程序有前途么)

delphi 安卓(大家觉得用delphi 开发安卓程序有前途么)

本文目录大家觉得用delphi 开发安卓程序有前途么delphi xe 可以实现所有android功能吗delphi2010可以开发安卓程序吗delphi android蓝牙4.0开发请问delphi android如何调用so文件delp

2025年3月15日 07:20

java语言程序设计第四版(自学java编程有什么好的教程吗)

java语言程序设计第四版(自学java编程有什么好的教程吗)

本文目录自学java编程有什么好的教程吗自学Java,有哪些书籍推荐大学教材《java语言程序设计》哪个版本比较好自学java编程有什么好的教程吗JAVA入门就比较宽泛了,市面上很多书,推荐《JAVA大学教程》,外国大学的JAVA教程,翻译

2025年4月2日 15:20

堡垒机作用?为什么要用堡垒机,堡垒机能给公司带来什么

堡垒机作用?为什么要用堡垒机,堡垒机能给公司带来什么

本文目录堡垒机作用为什么要用堡垒机,堡垒机能给公司带来什么堡垒机是干什么的堡垒机的作用是什么堡垒机的作用堡垒机的基本功能什么是堡垒机堡垒机如何使用运维安全审计系统与堡垒机啥关系堡垒机是什么业界有哪些知名的堡垒机品牌堡垒机作用堡垒机的作用堡垒

2025年3月1日 17:30

computer science(计算机科学课(computer science)是否应该成为国内中学生的主课之一)

computer science(计算机科学课(computer science)是否应该成为国内中学生的主课之一)

本文目录计算机科学课(computer science)是否应该成为国内中学生的主课之一即将入读墨尔本大学的science(computer science)可以怎么准备保研是继续读石油勘探还是跨到computer science计算机科学

2025年2月17日 20:20

prc是什么意思中文(PRC的中文意思是什么)

prc是什么意思中文(PRC的中文意思是什么)

本文目录PRC的中文意思是什么PRC中文意思PRC全称是什么PRC的中文意思是什么PRC 中华人民共和国 PRC Postal Rate Commission (美国)邮资委员会 PRC Planned Retirement Commu

2025年3月15日 10:50

教师法心得体会(教育政策法规与教师职业道德规范的学习心得,500字,谢谢)

教师法心得体会(教育政策法规与教师职业道德规范的学习心得,500字,谢谢)

本文目录教育政策法规与教师职业道德规范的学习心得,500字,谢谢法律知识心得体会作文教师的权利和义务的认识如何写师风师德心得体会学习法律课的心得体会学习法律事务的体会通过学习《教育法》、《教师法》、《九年义务教育法》、《中小学教师职业道德规

2025年3月8日 21:40

原码 反码 补码(计算机的原码,反码,补码是怎么回事可以举例说明吗)

原码 反码 补码(计算机的原码,反码,补码是怎么回事可以举例说明吗)

本文目录计算机的原码,反码,补码是怎么回事可以举例说明吗原码、补码和反码的概念计算机的原码,反码,补码是怎么回事可以举例说明吗原码、反码和补码是计算机中对数字二进制的三种表示方法。1、原码原码(true form)是一种计算机中对数字的二进

2025年3月7日 08:30

jsp教程pdf(在JSP中怎么实现网页直接浏览PDF和WORD文件)

jsp教程pdf(在JSP中怎么实现网页直接浏览PDF和WORD文件)

本文目录在JSP中怎么实现网页直接浏览PDF和WORD文件如何在jsp中直接打开本地硬盘上的pdf等文件在JSP中怎么实现网页直接浏览PDF和WORD文件pdf 在html5规范中可以直接看(微网站不行,IOS被微信给限制了),word转化

2025年2月20日 07:40

欢迎页面图片(U盘启动进PE装系统的那个欢迎界面图片怎么改)

欢迎页面图片(U盘启动进PE装系统的那个欢迎界面图片怎么改)

本文目录U盘启动进PE装系统的那个欢迎界面图片怎么改如何修改欢迎界面的图片win7开机时欢迎界面怎么改壁纸XP怎么修改开机时欢迎界面的图片怎样修改电脑开机欢迎页面的图片如题 谢谢了win7欢迎界面图片在哪设置win10欢迎界面图片在哪里wi

2025年3月27日 12:20

filterconfig(请问如何在Filter中获取ServletConfig对象)

filterconfig(请问如何在Filter中获取ServletConfig对象)

本文目录请问如何在Filter中获取ServletConfig对象怎样创建filterconfig对象请问如何在Filter中获取ServletConfig对象首先讲config类放入servletContext中其中config是负责存储

2025年2月22日 07:00

load是什么意思中文(load是什么意思)

load是什么意思中文(load是什么意思)

本文目录load是什么意思load什么意思load是什么意思 load的英文意思电路图中load什么意思load是什么意思及反义词LoAD和soURCE分别单词的中文意思是什么load是什么意思load:n.

2025年3月30日 18:40

数据库去重distinct(distinct去重多个字段)

数据库去重distinct(distinct去重多个字段)

本文目录distinct去重多个字段elasticSearch Java API 怎么将查询出来的数据类似sql 一样的distinct 去重某个字段求助大神,数据库查询结果的去重除了distinct关键字,还有什么别的方法没distinc

2025年3月23日 00:30

动画制作软件电脑版(电脑做动画用啥软件)

动画制作软件电脑版(电脑做动画用啥软件)

本文目录电脑做动画用啥软件有什么可以在电脑端做gif图的软件吗动画制作软件电脑flash动画制作软件怎么下载电脑做动画用啥软件你可以先去【绘学霸】网站找“动画制作技术”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www

2025年2月8日 21:50

奥鹏教师教育网官网(奥鹏远程教育的成绩怎么查询在哪个网站查)

奥鹏教师教育网官网(奥鹏远程教育的成绩怎么查询在哪个网站查)

本文目录奥鹏远程教育的成绩怎么查询在哪个网站查奥鹏教育学生登录新平台怎样登录在奥鹏教育报考教师资格证拿到的是真证还是假证奥鹏教育学生登录平台应该怎么登录奥鹏教师教育网怎么下载学时证书奥鹏远程教育的成绩怎么查询在哪个网站查远程开放教育是教育,

2025年2月11日 14:50

定时关机命令(定时关机命令win10)

定时关机命令(定时关机命令win10)

本文目录定时关机命令win10电脑定时关机在设置怎样给电脑设置定时关机怎样能设置电脑定时关机怎么让电脑定时关机请问电脑定时关机的命令是什么如何让电脑每天定时关机定时关机的命令是什么电脑定时关机怎么设置win7设置定时关机命令定时关机命令wi

2025年2月9日 21:50

近期文章

million billion(million,billion和thousand之间应该怎么转化 要举例的那种 谢谢)
2025-04-05 17:30:01
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索