社区
Java
帖子详情
如何更改socket去实现多人聊天
LOCO1993
2015-10-25 10:32:53
2楼上代码,新人刚刚学习socket,下面的代码只能实现单个客户端与服务器聊天,但是把服务器的监听设置了随时之后发现不能看了,看了两天还没完成,希望各位大神能讲解下思路,最后能在原代码上加以更改的讲解,谢谢
...全文
70
2
打赏
收藏
如何更改socket去实现多人聊天
2楼上代码,新人刚刚学习socket,下面的代码只能实现单个客户端与服务器聊天,但是把服务器的监听设置了随时之后发现不能看了,看了两天还没完成,希望各位大神能讲解下思路,最后能在原代码上加以更改的讲解,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LOCO1993
2015-10-25
打赏
举报
回复
client: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class MyClient { public static void main(String[] args){ JFrame f=new JFrame("AA"); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JTextArea ta=new JTextArea(15,30); ta.setEditable(false); //文本域只读 JScrollPane sp=new JScrollPane(ta); //滚动窗格 JTextField tf=new JTextField(20); JButton b=new JButton("发送"); p1.add(sp); p2.add(tf); p2.add(b); f.add(p1,"Center"); f.add(p2,"South"); f.setBounds(300,300,360,300); f.setVisible(true); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Socket socket=null; BufferedInputStream bis=null; BufferedOutputStream bos=null; try{ socket=new Socket("127.0.0.1",5000); bis=new BufferedInputStream(socket.getInputStream()); bos=new BufferedOutputStream(socket.getOutputStream()); MyThread01 mt=new MyThread01(bis,ta); mt.start(); }catch(Exception e){ e.printStackTrace(); } b.addActionListener(new ButtonActionListener01(tf,ta,bos)); } } class ButtonActionListener01 implements ActionListener{ JTextField tf; JTextArea ta; BufferedOutputStream bos; public ButtonActionListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){ this.tf=tf; this.ta=ta; this.bos=bos; } public void actionPerformed(ActionEvent e){ String message=tf.getText(); if(!message.equals("")){ tf.setText(""); //清空文本框 ta.append("AA:"+message+"\n"); //添加到文本域并换行 try{ bos.write(message.getBytes()); bos.flush(); }catch(Exception ex){ System.out.println("发送失败"); } } } } class MyThread01 extends Thread{ BufferedInputStream bis; JTextArea ta; public MyThread01(BufferedInputStream bis,JTextArea ta){ this.bis=bis; this.ta=ta; } public void run(){ try{ while(true){ byte[] b=new byte[100]; int length=bis.read(b); String message=new String(b,0,length); ta.append("BB:"+message+"\n"); } }catch(Exception e){ e.printStackTrace(); } } }
LOCO1993
2015-10-25
打赏
举报
回复
server: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class MyServer { public static void main(String[] args) { JFrame f = new JFrame("BB"); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JTextArea ta = new JTextArea(12, 30); // 文本域,第一个参数为行数,第二个参数为列数 ta.setEditable(false); // 文本域只读 JScrollPane sp = new JScrollPane(ta); // 滚动窗格 JTextField tf = new JTextField(20); JButton b = new JButton("发送"); p1.add(sp); p2.add(tf); p2.add(b); f.add(p1, "Center"); f.add(p2, "South"); f.setBounds(300, 300, 360, 300); f.setVisible(true); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ServerSocket server = null; Socket socket = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { server = new ServerSocket(5000); // ta.append("等待AA连接...\n"); socket = server.accept(); // ta.append("AA已连接\n"); bis = new BufferedInputStream(socket.getInputStream()); bos = new BufferedOutputStream(socket.getOutputStream()); MyThread1 mt = new MyThread1(bis, ta); mt.start(); } catch (Exception e) { e.printStackTrace(); } b.addActionListener(new ButtonActionListener1(tf, ta, bos)); } } class ButtonActionListener1 implements ActionListener { JTextField tf; JTextArea ta; BufferedOutputStream bos; public ButtonActionListener1(JTextField tf, JTextArea ta, BufferedOutputStream bos) { this.tf = tf; this.ta = ta; this.bos = bos; } public void actionPerformed(ActionEvent e) { String message = tf.getText(); // 获取文本框中的内容 if (!message.equals("")) { tf.setText(""); // 清空文本框 ta.append("BB:" + message + "\n"); // 添加到文本域并换行 try { bos.write(message.getBytes()); bos.flush(); } catch (Exception ex) { System.out.println("发送失败!"); } } } } class MyThread1 extends Thread { BufferedInputStream bis; JTextArea ta; public MyThread1(BufferedInputStream bis, JTextArea ta) { this.bis = bis; this.ta = ta; } public void run() { try { while (true) { byte[] b = new byte[100]; int length = bis.read(b); String message = new String(b, 0, length); ta.append("AA:" + message + "\n"); } } catch (Exception e) { e.printStackTrace(); } } }
基于tkinter和
socket
tcp
实现
的
多人
在线
聊天
系统python源码.zip
基于tkinter和
socket
tcp
实现
的
多人
在线
聊天
系统python源码.zip基于tkinter和
socket
tcp
实现
的
多人
在线
聊天
系统python源码.zip基于tkinter和
socket
tcp
实现
的
多人
在线
聊天
系统python源码.zip基于tkinter和
socket
tcp...
socket
多人
聊天
室代码+详细解释
【标题】"
socket
多人
聊天
室代码+详细解释"是一个基于计算机网络技术的项目,主要使用了
socket
编程来
实现
一个能够支持
多人
实时交流的
聊天
室。这个项目特别适合于计算机网络实验,让学生深入理解网络通信的基本原理和...
windows环境下C语言多线程
实现
网络编程,
多人
聊天
室,[总结].pdf
实现
多人
聊天
室需要使用 Windows
Socket
编程、多线程编程和链表
实现
客户端连接管理。同时,需要注意线程安全和资源管理。 知识点: * Windows
Socket
编程 * 多线程编程 * 网络编程 * 链表
实现
客户端连接管理 * ...
操作系统与Linux程序设计团队作业,基于
Socket
编程的
多人
聊天
室 <C语言
实现
>+源代码+文档说明
操作系统与Linux程序设计团队作业,基于
Socket
编程的
多人
聊天
室 <C语言
实现
>+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才...
安卓XMPP
聊天
通讯
Socket
相关-androidasmack注册登陆
聊天
多人
聊天
室文件传输ASmack.zip
本文将深入探讨如何在Android平台上使用ASmack库来
实现
XMPP
聊天
通讯,包括用户注册、登录、
多人
聊天
室以及文件传输等核心功能。 首先,ASmack是Smack库的一个分支,专门为Android平台优化,它允许开发者轻松地集成...
Java
51,389
社区成员
85,770
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章