Java 聊天室实现

本文介绍了如何使用Java来实现一个聊天室的功能,包括服务器和客户端的代码实现,讲解了服务器和客户端通信以及客户端间信息传递的实现过程。
摘要由CSDN通过智能技术生成

用Java实现聊天室功能

聊天室功能分为两个部分,一部分是服务器的代码实现,一部分是客户端的代码实现,那么如何实现服务器和客户端的通信连接,如何实现客户端和客户端之间的信息通信就是我们要考虑的问题了。

先看一下我们做出的聊天室效果:

在这里插入图片描述

接下来上代码:

//首先是服务器主程序代码
package chatroom;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
* @description:
* @date:created in 2020-07-08 16:19
* @author:Dylan
* @modified by:
*/
public class ChatServer {
   
 //主函数入口
 public static void main(String[] args) throws IOException {
   
     //实例化一个服务器类的对象
     ChatServer cs=new ChatServer();
     //调用方法,为指定端口创建服务器
     cs.setUpServer();
 }
 private void setUpServer() throws IOException {
   
     // TODO Auto-generated method stub
     ServerSocket server=new ServerSocket(9000);
     //打印出当期创建的服务器端口号
     System.out.println("服务器创建成功!端口号:"+ 9000);
     while(true) {
   
         //等待连接进入
         Socket socket=server.accept();
         System.out.println("进入了一个客户机连接:"+socket.getRemoteSocketAddress().toString());
         //启动一个线程去处理这个对象
         ServerThread st=new ServerThread(socket);
         st.start();
     }
  }
}

//聊天室线程代码
package chatroom;

import java.io.*;
import java.net.Socket;

/**
 * @description:
 * @date:created in 2020-07-08 16:21
 * @author:Dylan
 * @modified by:
 */
public class ServerThread extends Thread {
   
    private Socket client;//线程中的处理对象
    private OutputStream ous;//输出流对象
    private UserInfo user;//用户信息对象

    public ServerThread(Socket client) {
   
        this.client=client;
    }

    public UserInfo getOwerUser() {
   
        return this.user;
    }

    @Override
    public void run() {
   
        try {
   
            processSocket();
        } catch (IOException e) {
   
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //在显示屏中打印信息,例如"用户名"、"密码"等等
    public void sendMsg2Me(String msg) throws IOException {
   
        msg+="\r\n";
        ous.write(msg.getBytes());
        ous.flush();
    }
    private void processSocket() throws IOException {
   
        // TODO Auto-generated method stub
        InputStream ins=client.getInputStream();
        ous=client.getOutputStream(
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java聊天室实现带界面可以使用Java Swing界面库和Socket网络编程技术。 以下是一个简单的Java聊天室实现带界面的代码示例: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class ChatClient extends JFrame implements ActionListener { private JTextField tf; private JTextArea ta; private JButton sendBtn; private Socket socket; private BufferedReader br; private BufferedWriter bw; public ChatClient() { super("Chat Client"); tf = new JTextField(); ta = new JTextArea(); sendBtn = new JButton("Send"); JScrollPane scrollPane = new JScrollPane(ta); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(tf, BorderLayout.CENTER); panel.add(sendBtn, BorderLayout.EAST); Container contentPane = getContentPane(); contentPane.add(scrollPane, BorderLayout.CENTER); contentPane.add(panel, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); setVisible(true); tf.addActionListener(this); sendBtn.addActionListener(this); try { socket = new Socket("localhost", 8000); br = new BufferedReader(new InputStreamReader(socket.getInputStream())); bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); new Thread(new ReceiveThread()).start(); } catch (Exception ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { try { String message = tf.getText(); bw.write(message + "\n"); bw.flush(); ta.append("> " + message + "\n"); tf.setText(""); } catch (Exception ex) { ex.printStackTrace(); } } class ReceiveThread implements Runnable { public void run() { try { while (true) { String message = br.readLine(); ta.append("< " + message + "\n"); } } catch (Exception ex) { ex.printStackTrace(); } } } public static void main(String[] args) { new ChatClient(); } } ``` 这个聊天室客户端程序包括一个文本框、一个文本域、一个发送按钮和一个接收线程。它使用Socket连接到localhost的8000端口,发送和接收消息。用户输入消息后按Enter键或点击发送按钮,消息就会发送到服务器,服务器将消息广播给所有客户端。当有新消息到达时,接收线程将读取消息并在文本域中显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值