📄 server.java
字号:
package group.server;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
/**
<code>Server</code> 此类是服务器端的主类,主要用于和客户端的连接和产生线程
@author wls
*/
public class Server
{
private ServerSocket serSocket; //服务器端Socket
private Socket mainSocket; //用于与客户端通信的Socket
private static ServerFrame serFrame; //服务器的主窗口框架
private InetAddress address; //用于服务器端的IP对象,主要是为了方便服务器端软件换计算机
/**
"PORT" 此int常量用于设定与客户端连的端口
*/
public static final int PORT = 3129; //用于通信的端口常量
/**
Server类的唯一构造函数,主要用于一些成员的初始化
*/
public Server()
{
serFrame = new ServerFrame();
serFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
serFrame.IOFlush();
System.exit(0);
}
});
try
{
serSocket = new ServerSocket(PORT);
}catch(IOException IO_e)
{
serFrame.updateMes("ServerSocket 初使化时发生IO错误:\n" +
IO_e.toString());
return;
}
try
{
address = InetAddress.getLocalHost();
}catch(UnknownHostException net_e)
{
serFrame.updateMes("未知的主机名错误,错误发生在Server类的构造函数:\n" +
net_e.toString());
try
{
serSocket.close();
}catch(IOException IO_e2)
{
serFrame.updateMes("serSocket.close()时出错:\n" +
IO_e2.toString());
}
}
if(address != null)
{
serFrame.updateMes("服务器启动完毕!");
serFrame.updateMes("本机的IP地址为: " + address.toString().substring(
address.toString().lastIndexOf("/") + 1));
}
}
/**
此方法用于创建与每个客户端连接的线程
*/
public void createThread()
{
if(serSocket == null)
{
return;
}
while(true)
{
try
{
Socket soc = serSocket.accept();
new ControlService(soc, serFrame);
}catch(IOException IO_e)
{
serFrame.updateMes(" Server类中createThread方法发生IO错误:\n" +
IO_e.toString());
try
{
serSocket.close();
}catch(IOException IO_e2)
{
serFrame.updateMes("Server类中调用serSocket.close()发生IO错误:\n" +
IO_e2.toString());
}
return;
}
}
}
/**
main()方法,服务器端执行入口
*/
public static void main(String[] args)
{
Server ser = new Server();
ser.serFrame.show();
ser.createThread();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -