社区
Java
帖子详情
如何更改socket去实现多人聊天
LOCO1993
2015-10-25 10:32:53
2楼上代码,新人刚刚学习socket,下面的代码只能实现单个客户端与服务器聊天,但是把服务器的监听设置了随时之后发现不能看了,看了两天还没完成,希望各位大神能讲解下思路,最后能在原代码上加以更改的讲解,谢谢
...全文
121
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(); } } }
java大作业网络
聊天
室
这个项目是我大一的java期末大作业,学习了一个学期的成果,编程能力不够,做的并不够好,写在这里记录一下自己的成长,也欢迎大家给出宝贵意见! 该篇博客写一个基于java的单/
多人
网络即时
聊天
室,
聊天
室 ...
使用nodejs+
Socket
打造P2P
实现
多人
聊天
室
使用nodejs+
Socket
打造P2P
实现
多人
聊天
室
express
socket
.io 搭建web
socket
多人
聊天
室代码实战
Web
Socket
核心技术解析与实战应用 摘要:Web
Socket
通过协议升级机制(HTTP 101)建立持久化全双工连接,解决了HTTP轮询的带宽浪费问题。其核心特性包括:二进制帧传输(含FIN位/Opcode/Mask)、服务端主动推送、心跳保活机制。安全方面采用wss加密和同源策略。实战演示了基于Express+
Socket
.IO的
聊天
室
实现
,包含用户管理、消息广播和断线重连功能。相比传统HTTP,Web
Socket
在实时
聊天
、金融推送等场景可
实现
毫秒级延迟,并通过
socket
.io等库提供优雅降级方
python
socket
多人
聊天
程序
当前版本只是1.0稳定版,仍然有很多功能可以添加及优化,代码我会开源放在我的网站上,如果大家在使用过程中遇到bug,或者有哪里不会用的地方,欢迎留言和分享,也可以提出改进的意见,如果在我能力范围之内我会尽力去做,谢谢
搭建
多人
聊天
室(保姆级教学,从0开始)
我们需要Node.js 一、先来个最终效果图,我做的是手机端网页,不过用电脑也可 哎呦,还不错吧,虽然我的
聊天
室极简,但也保证你的学习难度不会太大哦。 二、开始准备工作,下载node.js吧 博客园的node.js安装链接在此!!! 好的,如果你用这个保姆级链接安装node.js依然没有真正成功(你后面的
聊天
室搭建一定会出现问题),在我的实践下,错误大概是: 1、不要把node安装到c盘,c盘的文件操作是需要管理员权限的,而node的操作是依赖你的cmd面板的,一般来说cmd面板一开始是不会开启管理员权限
Java
51,407
社区成员
86,112
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章