⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 JAVA编写的聊天小程序!!程序默认需放到D:下
💻 JAVA
字号:
package group.client;

import java.awt.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

/**
 客户端的起动类,负责起动界面和消息流的控制,实现多线程接口
*/
public class Client implements Runnable
{
	private ClientFrame cFrame;					//客户端聊天主窗口
	private LoginFrame logFrame;					//客户端的登录窗口
	private RegFrame regFrame;					//客户端的注册窗口
	private ControlMes conMes;					//客户端用来处理消息流的类
	private Thread thread;						//客户端专用来接收对象的线程
	private Socket clientSocket;					//连接服务器的Socket

	public Client()
	{
		this("127.0.0.1");
	}

	/**
	 构造函数,负责连接服务器和起动另外一个线程,并初始化属性
	*/
	public Client(String serverIP)
	{
		thread = new Thread(this);

		logFrame = new LoginFrame(this);
		regFrame = new RegFrame(this);
		cFrame = new ClientFrame(this);
		conMes = new ControlMes(this, cFrame);

		try
		{
			clientSocket = new Socket(serverIP, 3129);
		}catch(IOException IO_e)
		{
			JOptionPane.showMessageDialog(null, "网络有问题,连接服务器时出错!!!",
				"错误", JOptionPane.ERROR_MESSAGE);
			return;
		}

		conMes.setSocket(clientSocket);
		thread.start();
	}

	/**
	 此方法用来显示登录窗口
	*/
	public void startLogin()
	{
		logFrame.setVisible(true);
	}

	/**
	 此方法用来显示注册窗口
	*/
	public void startReg()
	{
		regFrame.setVisible(true);
	}

	/**
	 此方法用来显示聊天主窗口
	*/
	public void startFrame()
	{
		cFrame.setVisible(true);
		logFrame = null;
		regFrame = null;
	}

	/**
	 此方法负责中转用户的登录信息
	 @param ID 用户的登录ID
	 @param passWord 用户的登录密码
	*/
	public void loginInfo(String ID, String passWord)
	{
		conMes.sendLogin(ID, passWord);
	}

	/**
	 此方法负责中转用户的注册信息
	 @param passWord 用户注册时输入的密码
	 @param name 用户注册时输入的昵称
	*/
	public void regInfo(String passWord, String name)
	{
		conMes.buildID(passWord, name);
	}

	/**
	 此方法负责把用户聊天时输入的聊天信息传送给ControlMes类的sendMes()方法
	 @param mes 用户的聊天信息
	*/
	public void sendMes(String mes)
	{
		conMes.sendMes(mes);
	}

	/**
	 此方法负责把用户的悄悄话传送给ControlMes类的sendLatent()方法
	 @param toFrendID 用户的悄悄要发送给的朋友的ID
	 @param mes 用户要发送的消息
	*/
	public void sendLatent(String toFrendID, String mes)
	{
		conMes.sendLatent(toFrendID, mes);
	}

	/**
	 接收消息线程的入口
	*/
	public void run()
	{
		while(true)
		{
			conMes.inceptObj();
		}
	}

	/**
	 客户端执行入口,可以在执行参数中提供服务器IP
	*/
	public static void main(String[] args)
	{
		Client c;

		if(args.length == 1)
		{
			c = new Client(args[0]);
		}
		else
		{
			c = new Client();
		}

		c.startLogin();

//		c.startFrame();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -