Java Socket TCP 聊天室通信,实现一个服务器接收多个客户端。
在效果图中有两个登录界面,登录界面这里我设的用户名和密码分别在代码的响应事件中有出现,可以在下面的代码中看出登录。
下图是登录以后的客户端界面还有登录以后的服务器界面,在运行程序时候要先开始服务器端的后才能使得客户端可以与服务器端连接到
客户端:
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
public class test1 extends JFrame {
static Socket socket = null;
String name = null;
BufferedReader in;
PrintWriter out;
JTextArea jtextarea_north = new JTextArea(14,40); // 创建聊天区
JTextArea jtextarea_south = new JTextArea(5,40); // 创建输入的文本区
JScrollPane jsp_north = new JScrollPane(jtextarea_north); // 创建滚动的聊天区 将聊天区叫到滚动区里面
JScrollPane jsp_south = new JScrollPane(jtextarea_south);
JButton jbutton_send = new JButton("发送"); // 创建发送的按钮
JButton jbutton_close = new JButton("关闭");
JPanel pan_north = new JPanel(); // 创建面板
JPanel pan_south = new JPanel();
JPanel pan_picture = new JPanel();
JPanel pan_button = new JPanel();
JFrame jframe1 = new JFrame("登录界面");
JLabel[] array = {new JLabel("用户名"),new JLabel("密码")};
JTextField jname = new JTextField();
JPasswordField jpassword = new JPasswordField();
JButton enter = new JButton("登录");
JButton cancel = new JButton("取消");
Thread receive = new Thread(new receiveThread());
public void enter()
{
jframe1.setLayout(null);
array[0].setBounds(20,20,50,25);
jname.setBounds(70,20,170,25);
array[1].setBounds(20,60,50,25);
jpassword.setBounds(70,60,170,25);
jframe1.setBounds(700,500,280,220);
enter.setBounds(50, 100, 70, 30);
cancel.setBounds(150, 100, 70, 30);
jframe1.add(enter);
jframe1.add(cancel);
jframe1.add(jn