【Java】Java多线程实现的聊天客户端和服务器

主要涉及知识

·Java中GUI程序的编写,包括事件监听机制。

·Java的网络通信编程,ServerSocket,Socket类的使用。

·Java中多线程的编程,Thread类,Runnable接口的使用。


源代码

客户端

package project1;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

import javax.swing.*;

public class Client {
	private JFrame clientFrame;
	private JLabel IPLabel;
	private JLabel PortLabel;
	private JLabel sayLabel;
	private JLabel nicknameLabel;
	private JTextField IPText;
	private JTextField PortText;
	private JTextField nicknameText;
	private JTextField sayText;
	private JButton connectButton;
	private JButton nicknameButton;
	private JButton sayButton;
	private JPanel jPanelNorth;
	private JPanel jPanelSouth0;
	private JPanel jPanelSouth1;
	private JPanel jPanelSouth2;
	private JTextArea clientTextArea;
	private JScrollPane scroller;
	private BufferedReader reader;
	private PrintWriter writer;
	private String nickname;

	public static void main(String args[]) {
		Client aClient = new Client();
		aClient.startUp();
	}

	// 初始化组件
	public Client() {
		nickname = "客户端";

		clientFrame = new JFrame();
		jPanelNorth = new JPanel();
		IPLabel = new JLabel("服务器IP", JLabel.LEFT);
		IPText = new JTextField(10);
		PortLabel = new JLabel("服务器端口", JLabel.LEFT);
		PortText = new JTextField(10);
		connectButton = new JButton("连接");
		clientTextArea = new JTextArea();
		scroller = new JScrollPane(clientTextArea);
		jPanelSouth0 = new JPanel();
		jPanelSouth1 = new JPanel();
		jPanelSouth2 = new JPanel();
		nicknameLabel = new JLabel("昵称", JLabel.LEFT);
		nicknameText = new JTextField(nickname, 30);
		nicknameButton = new JButton("确认");
		sayLabel = new JLabel("消息", JLabel.LEFT);
		sayText = new JTextField(30);
		sayButton = new JButton("确认");
	}

	// 构建GUI
	private void buildGUI() {
		// 窗口的设置
		clientFrame.setTitle("客户端");
		clientFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		clientFrame.setSize(550, 550);

		// 北区的组件
		jPanelNorth.add(IPLabel);
		jPanelNorth.add(IPText);
		jPanelNorth.add(PortLabel);
		jPanelNorth.add(PortText);
		jPanelNorth.add(connectButton);
		clientFrame.getContentPane().add(BorderLayout.NORTH, jPanelNorth);

		// 中间的组件
		clien
  • 14
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值