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

📄 requestserver.java

📁 一个java rmi实现的分布式银行管理系统
💻 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 + -