Java实现的c/s的聊天室 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-20
Java实现的c/s的聊天室时间:2011-01-22 iteye zhaohong根据马士兵老师聊天室程序进行优化,同时增加聊天者之间的交互。 同时增加服务端会为每一个客户端增加一个交互窗口,让服务器可以和每一个客户端交互! 服务端代码 1.import java.net.*; 2.import java.util.*; 3.import java.io.*; 4.import java.awt.*; 5.import java.awt.event.*; 6.import javax.swing.*; 7. 8.import javax.swing.JFrame; 9. 10.public class ChatServer extends JFrame { 11. JTextArea ta = new JTextArea(); 12. ServerSocket server = null; 13. Collection cClient = new ArrayList(); 14. 15. public ChatServer(int port) throws Exception { 16. server = new ServerSocket(port); 17. add(ta, BorderLayout.CENTER); 18. setBounds(200, 200, 300, 450); 19. this.addWindowListener(new WindowAdapter() { 20. public void windowClosing(WindowEvent e) { 21. System.exit(0); 22. } 23. }); 24. setVisible(true); 25. } 26. 27. public void startServer() throws Exception { 28. while (true) { 29. Socket s = server.accept(); 30. cClient.add(new ClientConn(s)); 31. ta.append(s.getInetAddress().getHostName() + "进入" + " " + "端口号" 32. + s.getPort()); 33. ta.append("\n" + "当前在前总人数: " + cClient.size() + "\n\n"); 34. } 35. } 36. 37. class ClientConn extends Frame implements Runnable, ActionListener { 38. TextArea ta1 = null; 39. TextArea ta2 = null; 40. Button btn = null; 41. Socket s = null; 42. 43. public ClientConn(Socket s) { 44. ta1 = new TextArea(3, 30); 45. ta2 = new TextArea(2, 15); 46. btn = new Button("发送"); 47. this.setLayout(new BorderLayout()); 48. this.add(ta1, BorderLayout.CENTER); 49. this.add(ta2, BorderLayout.SOUTH); 50. this.add(btn, BorderLayout.EAST); 51. this.setSize(300, 200); 52. this.setVisible(true); 53. this.setTitle("" + s.getInetAddress().getHostName() + "端口" 54. + s.getPort()); 55. this.s = s; 56. (new Thread(this)).start(); 57. btn.addActionListener(this); 58. } 59. 60. public void actionPerformed(ActionEvent e) { 61. try { 62. DataOutputStream dos = new DataOutputStream(s.getOutputStream()); 63. dos.writeUTF("服务器:\n" + ta2.getText() + "\n"); 64. ta1.append("服务器:\n" + ta2.getText() + "\n"); 65. ta2.setText(""); 66. } catch (IOException E) { 67. 68. } 69. } 70. 71. public void send(String str, String st) throws IOException { 72. DataOutputStream dos = new DataOutputStream(s.getOutputStream()); 73. dos.writeUTF(st + "说 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Java实现的c/s的聊天室 - 编程入门网的所有评论