社区
Java
帖子详情
如何更改socket去实现多人聊天
LOCO1993
2015-10-25 10:32:53
2楼上代码,新人刚刚学习socket,下面的代码只能实现单个客户端与服务器聊天,但是把服务器的监听设置了随时之后发现不能看了,看了两天还没完成,希望各位大神能讲解下思路,最后能在原代码上加以更改的讲解,谢谢
...全文
116
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(); } } }
政府科技管理者如何精准评估区域科技创新短板?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
YOLO淡水水域鱼类目标检测数据集-7480张-fish-3do7i-fish-rlea0-v1-7480
下方展示数据集可视化效果,供参考。 YOLO淡水水域鱼类目标检测数据集 目标类别:['Abramis brama', 'Acipenseridae', 'Anguilla anguilla', 'Aspius aspius', 'Barbus barbus', 'Blicca bjoerkna', 'Carassius carassius', 'Carassius gibelio', 'Ctenopharyngodon idella', 'Cyprinus carpio', 'Esox lucius', 'Gasterosteus aculeatus', 'Gobio gobio', 'Gymnocephalus cernuus', 'Lepomis gibbosus', 'Leuciscus cephalus', 'Leuciscus idus', 'Leuciscus leuciscus', 'Neogobius fluviatilis', 'Neogobius kessleri', 'Neogobius melanostomus', 'Perca fluviatilis', 'Rhodeus amarus', 'Rutilus rutilus', 'Salmo trutta subsp- fario', 'Sander lucioperca', 'Scardinius erythrophthalmus', 'Silurus glanis', 'Tinca tinca', 'Vimba vimba'] 中文类别:['欧鳊', '鲟科鱼类', '欧洲鳗鲡', '欧白鱼', '欧雅罗鱼', '红鳍鲌', '鲫鱼', '镜鲤', '鳙鱼', '鲤鱼', '梭子鱼', '刺鱼', '小鰕虎鱼', '银鮈', '太阳鱼', '头鲈', '雅罗鱼', '白条鱼', '河口鰕虎鱼',
产业园区运营方如何挖掘潜在合作单位和推动跨区域协同创新?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
Java
51,408
社区成员
86,104
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章