问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java实现QQ群聊

发布网友 发布时间:2022-04-24 06:20

我来回答

4个回答

热心网友 时间:2022-06-16 17:53

很久前写的代码了,以前能运行。电脑没装jdk,没试试,自己试一下把。。
---------------服务器------------
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

class myframe extends Frame implements ActionListener,WindowListener,Runnable,KeyListener
{
Thread mythread = new Thread(this);
Socket mysocket;
DataInputStream in;
DataOutputStream out;

Label label_ip = new Label("IP");
Label label_port = new Label("Port");
TextField text_ip = new TextField("127.1.1.0",15);
TextField text_port = new TextField("8888",15);
Button button_connect = new Button("连接");

TextArea text_area_show = new TextArea();

TextField text_send = new TextField(45);
Button button_send = new Button("发送");

myframe()
{
Panel panel1 = new Panel();
Panel panel2 = new Panel();

panel1.setLayout(new FlowLayout());
panel1.add(label_ip);
panel1.add(text_ip);
panel1.add(label_port);
panel1.add(text_port);
panel1.add(button_connect);

panel2.setLayout(new FlowLayout());
panel2.add(text_send);
panel2.add(button_send);

add(panel1,BorderLayout.NORTH);
add(text_area_show,BorderLayout.CENTER);
add(panel2,BorderLayout.SOUTH);

text_send.addKeyListener(this);
button_connect.addActionListener(this);
button_send.addActionListener(this);
addWindowListener(this);

this.setTitle("客户端");
setBounds(200,200,400,350);
setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button_connect)
{
try
{
String ip = null,port = null;
ip = text_ip.getText();
port = text_port.getText();
mysocket = new Socket(ip, Integer.parseInt(port));
in = new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
}
catch (UnknownHostException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
mythread.start();

}
if(e.getSource() == button_send)
{
if(mysocket.isConnected() == true)
{
String temp = null;
temp = text_send.getText();
try
{
out.writeUTF(temp);
text_send.setText(null);
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

public void run()
{
while(true)
{
String temp = null;
try
{
temp = in.readUTF();
}
catch (IOException ex)
{
text_area_show.append("服务器退出\n");
return;
}
temp += "\n";
text_area_show.append(temp);
}
}

public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
String temp = null;
temp = text_send.getText();
try
{
out.writeUTF(temp);
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}

public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
}
public class mywindow
{
public static void main(String argv[])
{
myframe f = new myframe();
}
}
-----------客户端-----------
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

class SocketList
{
int length = 0;
Socket socketlist[] = new Socket[10];
SocketList()
{
}
void add(Socket s)
{
if(length == 10)
{
return;
}
socketlist[length] = s;
length++;
}
void Delete(Socket s)
{
int i = 0;
for(i = 0;i < length;i++)
{
if(socketlist[i] == s)
{
break;
}
}
for(int j = i;j < length;j++)
{
socketlist[j] = socketlist[j + 1];
}
length--;
/*
for(int k = 0;k < length;k++)
{
if(socketlist[k].isBound() == true)
{
System.out.print("error");
}
}*/
}
}

class FrameThread extends Thread
{
myframe frame;
FrameThread(myframe f)
{
frame = f;
start();
}
public void run()
{
while(true)
{
InetAddress addr = null;
Socket s = null;
try
{
s = frame.server.accept();
addr = s.getInetAddress();
frame.socketlist.add(s);
for(int i = 0;i < frame.socketlist.length;i++)
{
if(frame.socketlist.socketlist[i] != s )
{
DataInputStream in = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());
DataOutputStream out= new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());
out.writeUTF(addr + "连接到服务器");
}
}
}
catch (IOException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);
}
frame.text_area_show.append(addr + "连接到服务器\n");
try
{
frame.list.add(InetAddress.getLocalHost().getHostAddress() + "-" + s.getPort());
}
catch (UnknownHostException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);
}
try
{
new ClientThread(s, frame);
}
catch (IOException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

class ClientThread extends Thread
{
DataInputStream in = null;
DataOutputStream out = null;
Socket mysocket = new Socket();
myframe frame = null;
InetAddress addr = null;
ClientThread(Socket s,myframe f) throws IOException
{
mysocket = s;
addr = mysocket.getLocalAddress();
frame = f;
in = new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
out.writeUTF("成功连接服务器");
start();
}
public void run()
{
while(true)
{
String temp = null;
try
{
temp = in.readUTF();
for(int i = 0;i < frame.socketlist.length;i++)
{
DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());
DataOutputStream out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());
out_temp.writeUTF(addr + "说: " + temp);
}
frame.text_area_show.append(addr + "说: " + temp + "\n");
}
catch (IOException ex)
{
frame.socketlist.Delete(mysocket);
frame.text_area_show.append(addr + "退出服务器\n");
for(int i = 0;i < frame.socketlist.length;i++)
{
try
{
DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);
}
DataOutputStream out_temp = null;
try
{
out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);
}
try
{
out_temp.writeUTF(addr + "退出服务器");
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);
}
}
return;
}
}
}
}

class myframe extends JFrame implements ActionListener,WindowListener,KeyListener
{
List list = new List(16);
TextArea text_area_show = new TextArea(15,40);
TextField text_send = new TextField(50);
Button button_send = new Button("发送");
ServerSocket server = null;
FrameThread thread;
SocketList socketlist = new SocketList();

myframe() throws IOException
{
Panel panel1 = new Panel();
panel1.setLayout(new FlowLayout());
panel1.add(text_area_show);
panel1.add(list);
list.addActionListener(this);

Panel panel2 = new Panel();
panel2.setLayout(new FlowLayout());
panel2.add(text_send);
panel2.add(button_send);

setLayout(new FlowLayout());
add(panel1);
add(panel2);

text_send.addKeyListener(this);
button_send.addActionListener(this);
addWindowListener(this);

server = new ServerSocket(8888);
thread = new FrameThread(this);

setTitle("服务器");
setBounds(200,200,450,330);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == list)
{
text_area_show.append(list.getSelectedItem() + "\n");
}
if(e.getSource() == button_send)
{
for(int i = 0;i < socketlist.length;i++)
{
try
{
DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream());
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
DataOutputStream out = null;
try
{
out = new DataOutputStream(socketlist.socketlist[i].getOutputStream());
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
try
{
out.writeUTF(text_send.getText());
text_send.setText(null);
// text_area_show.append(text_send.getText() + "\n");
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}

public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
for(int i = 0;i < socketlist.length;i++)
{
try
{
DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream());
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
DataOutputStream out = null;
try
{
out = new DataOutputStream(socketlist.socketlist[i].getOutputStream());
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
try
{
out.writeUTF(text_send.getText());
text_area_show.append(text_send.getText() + "\n");
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
public void keyReleased(KeyEvent e) {}
}
public class mywindow
{
public static void main(String argv[]) throws IOException
{
myframe f = new myframe();
}
}

热心网友 时间:2022-06-16 17:53

服务端:
import java.io.*;
import java.net.*;
import java.util.*;

public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List clients = new ArrayList();

public static void main(String args[]){
new ChatServer().start();
}

public void start() {
try {
ss = new ServerSocket(8888);
started = true;
}catch(BindException e){
System.out.println("端口使用中...");
System.out.println("请关掉相关程序并重新运行服务器");
System.exit(0);
}
catch(IOException e){
e.printStackTrace();
}

try{
while(started){
Socket s = ss.accept();
Client c = new Client(s);//注意:在方法里可以生成内部类对象
System.out.println("a clent connected");//调试用语句,可以左移以便将来删除
new Thread(c).start();//启动子线程,主线程负责不断监听客户端的连接
clients.add(c);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
ss.close();
}catch(IOException e2){
e2.printStackTrace();
}
}

}

class Client implements Runnable {
private Socket s = null ;
private DataInputStream dis = null;
private DataOutputStream dos = null; //转发用
private boolean bConnected = false ;

public Client(Socket s){
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());//转发用
bConnected = true ;
} catch (IOException e) {
e.printStackTrace();
}
}

public void send(String str){
try{
dos.writeUTF(str);
}catch(IOException e){
e.printStackTrace();
}
}

public void run() {
try{
while(bConnected){
String str = dis.readUTF();
System.out.println(str);//调试用
for(int i = 0; i<clients.size(); i++){
Client c = (Client)clients.get(i);
c.send(str);
}
/* 法2:需要锁定Client,但实际上不需要锁定,只需使用send方法,且效率低
for(Iterator it = clients.iterator(); it.hasNext();){
Client c = (Client)it.next();
c.send(str);
}
*/
}
}catch(EOFException e){
System.out.println("客户端关闭");
} catch(IOException e){
e.printStackTrace();
}finally{
try{
if(dis != null ) dis.close();
if(dos != null ) dos.close();
if(s != null ) s.close();
}catch(IOException e1){
e1.printStackTrace();
}
}
}

}
}

客户端:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

import javax.swing.*;

public class ChatClient extends JFrame {
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
JTextField tfTxt = new JTextField();
JTextArea taContent = new JTextArea(20,50);

Thread tRecv = new Thread(new RecvThread());

public static void main(String[] args) {
new ChatClient();
}

public ChatClient(){
this.setLocation(400,300);
this.setSize(300,300);
Container con = this.getContentPane();
con.add(tfTxt,BorderLayout.SOUTH);
con.add(taContent,BorderLayout.NORTH);
pack();
//窗口关闭事件处理
this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent arg0) {
disconnect();
System.exit(0);
}

});

tfTxt.addActionListener(new TFListener());
this.setVisible(true);
connect();//连接server

tRecv.start(); //启动线程
}

public void connect(){
try {
s = new Socket("127.0.0.1",8888);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
bConnected = true;
System.out.println("connected");//测试用
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public void disconnect(){
try {
bConnected = false ;
tRecv.join(); //等线程执行完
}catch (InterruptedException e) {
e.printStackTrace();
}finally{
try{
dos.close();//保证线程结束后关闭流
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

private class TFListener implements ActionListener {

public void actionPerformed(ActionEvent e) {
String str = tfTxt.getText().trim();
// taContent.setText(str);
tfTxt.setText("");

try {
dos.writeUTF(str);
dos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

private class RecvThread implements Runnable {

public void run() {
try{
while(bConnected){
String str = dis.readUTF();
taContent.setText(taContent.getText()+"\n"+str);
}
}catch(IOException e){
e.printStackTrace();
}

}

}
}
你看看啊 呵呵呵

热心网友 时间:2022-06-16 17:54

233013958适合1年以内经验者

热心网友 时间:2022-06-16 17:54

那就去找刷屏的函数~~~~~
用java实现QQ群聊

import java.awt.event.*;import java.net.*;import java.io.*;import java.util.logging.Level;import java.util.logging.Logger;class myframe extends Frame implements ActionListener,WindowListener,Runnable,KeyListener{ Thread mythread = new Thread(this); Socket mysocket; DataInputStream in; DataOutput...

请给我几个java QQ群,THINKS

Java热门QQ群:6927954 Java爱好者 5747018 Java开源框架研究 2184090 Java最后通道 5464040 Java技术交流 6090680 Java讨论组 6868040 Java讨论区 2848217 Java技术交流 5287881 Java社团 3057466 Java世界 3657130 Java夜未眠 4874250 Java开发者 6522650 Java联盟 4972763 Java爱好者 6880123 Java技术交流 2473372...

工作IT网IT工作QQ群

IT工作Java群:113657742(新群号)IT工作PHP群:70868152(新群号)IT工作Java应届生:86020680IT工作美工视效群:105827621、129052479(新)和153542492(新)IT工作网游富客户端:122675503和146570772(新)IT工作管理与文案:116864702IT工作营运与推广:36170273IT工作aspdoNet:85891825和121456506(新)其他...

QQ群机器人怎么制作?

7. 添加机器人到群聊:审核通过后,可以将机器人添加到指定的QQ群聊中。在群聊设置中找到“群机器人”选项,并添加您的机器人账号或ID。8. 管理和维护:监控机器人的运行状态,定期更新机器人的功能和内容。注意保护机器人的安全,防止被滥用或攻击。

java初学者应该进什么qq群好点,我是个新手,零基础,小白,我报了个java...

如楼上所说,“马克-to-win”弄的“马克java社区”里包括N多个qq群, 比如”java初学-马克联盟4“,动静挺大,我也是听人说的,进群以后,我问的问题, 如没人理,管理员会过一段时间,在他们的“马克社区”的百度贴吧, 和“马克-to-win”本人的新浪腾讯微博,微信,微博群里,群广场,同步...

...能不能写个java程序 定时自动把文件上传到QQ群共享里去啊?_百度...

上传到QQ群共享是需要打开一个网页的,那个网页里面的连接,连接了再开始上传,你可以写个程序得到那个连接,然后把你需要的文件路径名,填充到里面去,然后再从你的程序里面调用那个连接,似乎有那么一点可行性。。

如何把微信群导到qq群里

1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:3、在“安全设置-Internet 区域”界面找到“Java 小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击...

五款Java后端快速开发平台

JeeSite官网:jeesite.com/ JeeSite Github:github.com/thinkgem/jee...JeecgBoot是一款老牌的后台管理开发框架,是国内开源框架中的老前辈。JeecgBoot采用前后端分离架构:Spring Boot + Mybatis Plus+ Vue + Ant Design Vue;活跃的社区生态以及高 Github Star都能说明JeecgBoot的优秀。JeecgBoot内置前...

求个看视频的qq群

煌刊 H 5 2 0 v。。c o m一般的日志记录 API 都提供相应的工厂方法 来创建记录器对象。每个记录器对象都是有名称的。一般的做法是使用当前的 Java 类的名称或所在包的名称作为记录器对象的名称。记录器的名称通常是具有层次结构的,与 Java 包的层次结构相对应。

寻求电脑技术交流的QQ群

124849485,32960869,这两个群是电脑群,里面有高手解答

QQ群聊等级 qq群聊怎么变成群 qq群聊 群聊 怎么建立qq群聊 如何退出qq群聊 群聊怎么@所有人 qq群聊怎么拉人 qq群聊之火
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离焦和普通镜片的区别 昨夜星辰昨夜风,画楼西畔桂堂东.身无彩凤双飞翼,心有灵犀壹点通 后面的... “昨夜星辰昨夜风,画楼西畔桂堂东。”是什么意思_出处及原文翻译_学 ... 春捂养生吃什么?春不捂好易宫寒严重者或致不孕! 吃什么滋阴养颜 四种滋阴的食物最适合女性主妇网 5种食物来帮忙,滋阴补肾更健康 十大滋阴补气保健食材推荐 女性滋阴润燥最好的10种补品有哪些_百度知 ... 500g肉松紫米饭团的大小 下雨天的心情说说经典 三文鱼的胆固醇高吗 天净沙秋思,这首诗的内容和意思。 怎样将一对一的java语音聊天程序编程多人聊天 天净沙秋的意思越简单越好 小弟跪求用JAVA编写的聊天室,要能实现群聊和私聊··要源代码 天净沙秋思翻译 高手进,java实现聊天功能? 天净沙秋的诗意是什么? 如何用Java编写一个聊天室程序,可以支持单聊和多聊? 天净沙秋 的意思 java聊天小程序如何实现多人群聊功能 天净沙秋这首诗的意思 java写聊天程序,怎么做到私聊和群聊? 天净沙,秋。这首诗什么意思 我做java的简易聊天室,已经可以群聊和私聊,如何把创建房间加进去,且... 天净沙秋这首诗的意思。 我用java编了一个tcp一对一聊天程序,只能发送文本,不能发图片,求指明路,新手,多多包涵(^_^)∠※ 天净沙秋的意思 java 实现群聊天的原理 《天净沙 秋思》诗句的意思 求助用java编写的简单的一对一聊天程序。类似qq的。。需要界面。。谢谢... 天净沙秋,这首古诗的意思。 辛弃疾写的天净沙秋这首诗中秋是什么意思 用Java实现一个人和几个不同的人私聊,用Socket实现 古诗《天净沙 秋思》的意思 古诗天净沙秋思的意思 什么是普外科 普外科指什么 医院里外科是看什么病? 医院外科主要包括哪些? 外科和普外科有什么区别求解答 什么是普外科? 医院普外科是治什么病的? 医院科室介绍 外科医生,具体分哪些科的?请详细介绍!!! 小米15pro笔记本怎么改名称 普外科每月月宣传稿 如何发展普通外科 小米笔记本刚激活时注册的用户名能更改吗? 医院里有哪些科? 普外一科属于外科吗?