📄 requestserver.java
字号:
package BS.server;
/**
* @author 束罡
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import BS.server.businesslayer.RequestManager;
public class RequestServer extends Thread{
private int m_nPort = 1219;
private ServerSocket m_listenSocket;
static int m_nCount = 0;
static ServerSocket listenSocket;
public void run()
{
initServer();
}
static synchronized ServerSocket tfFServerSocketInstance()
{
try
{
if(listenSocket == null)
listenSocket = new ServerSocket(0);
}
catch(Exception e)
{
System.err.println("ERROR>> 服务器初始化失败");
}
return listenSocket;
}
private synchronized void initServer()
{
System.out.println("Banking Server is initializing...");
try
{
String BankServerData = "bin\\BankServerData\\Project1Server.xml";
new FileInputStream(BankServerData);
}
catch(FileNotFoundException e)
{
System.err.println("ERROR>> 服务器初始化文件找不到");
}
try
{
System.out.println("Banking Server is starting...");
m_listenSocket = new ServerSocket(m_nPort);
try
{
if(listenSocket == null)
listenSocket = new ServerSocket(0);
}
catch(Exception e)
{
System.err.println("ERROR>> 服务器初始化失败");
}
System.out.println("Banking Server is ready for connect and listening on:"+
InetAddress.getLocalHost().toString() + ", port " + m_nPort);
while(true)
{
Socket newClient = m_listenSocket.accept();
RequestServer.aUserLogIn();
String inetAddress = newClient.getInetAddress().toString();
System.out.println("============================");
System.out.print(inetAddress + " has connected to the server. ");
System.out.println("Current users: " + m_nCount);
System.out.println("============================");
ServerManager bankServer = new ServerManager(newClient);
bankServer.start();
}
}
catch(Exception e)
{
System.err.println("Failed to start Banking Server.");
System.err.println("Maybe the port specified is not avialable.");
InterestServer.flag = false;
}
}
public static synchronized int aUserLogIn()
{
return (++m_nCount);
}
public static synchronized int aUserLogOff()
{
return (--m_nCount);
}
public static void main(String[] args) {
RequestServer rs = new RequestServer();
rs.start();
}
}
class ServerManager extends Thread{
Socket client;
ServerManager(Socket s)
{
client = s;
}
public void run()
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
String result;
while(true)
{
result = "";
String strInfo = in.readLine();
// System.out.println(strInfo);
if(strInfo.startsWith("quit"))
{
break;
}
else
{
String clientAddr = client.getInetAddress().toString();
result = RequestManager.acceptTasks(strInfo);
System.out.println("----------------------------");
System.out.print(clientAddr + ": ");
System.out.println(result);
System.out.println("----------------------------");
}
out.println(result);
out.flush();
}
String clientAddr = client.getInetAddress().toString();
System.out.println("============================");
System.out.print(clientAddr + " has disconnected the server. ");
client.close();
in.close();
out.close();
}
catch(SocketException e)
{
System.err.println("An error accured on client.");
}
catch(Exception e)
{
System.err.println("Somthing wrong has happend during the session.");
}
finally
{
System.out.println("Current users: "+ RequestServer.aUserLogOff());
System.out.println("============================");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -