📄 client.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 + -