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

📄 serverbuilder.java

📁 这是我们专业的课程设计
💻 JAVA
字号:
package Sever;

import java.io.FileInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;

import Client.ClientBuilder;
import Commen.NetIO;
import Data.AdministratorCommandData;
import Data.InnerPassengerCommandData;
import Data.OuterPassengerCommandData;
import Data.StateData;
import Event.ServerEventListener;

public class ServerBuilder extends Thread implements ServerEventListener {
	private ServerSocket serverSocket;
	private boolean isBuilding = false;
	private Server admin;
	private Vector<Server> fromServerList = new Vector<Server>();
	private Vector<Server> serverList = new Vector<Server>();
	private static int soundPort = 9999;
	private static int filePort = 7777;
	private String fileIP;

	public static Socket AcceptSoundConnect() {
		try {
			ServerSocket soundServerSocket = new ServerSocket(soundPort);
			Socket socket = soundServerSocket.accept();
			System.out.println("recieve one sound client");
			return socket;
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}

	public static Socket AcceptFileConnect() {
		try {
			ServerSocket soundServerSocket = new ServerSocket(filePort);
			Socket socket = soundServerSocket.accept();
			System.out.println("recieve one file client");
			return socket;
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}

	public ServerBuilder() {
		try {
			isBuilding = true;
			serverSocket = new ServerSocket(8888);
			admin = null;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void run() {
		while (isBuilding) {
			try {
				Socket socket = serverSocket.accept();
				Server server = new Server(socket, this);
				serverList.addElement(server);
				server.start();
				System.out.println("One in,now has serverNum:"
						+ serverList.size());
				Thread.sleep(1000);
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			try {
				Thread.sleep(50);
			}catch (Exception ex){}
		}
	}

	public void StartListening() {
		this.start();
	}

	public void LetOneClientToConnect(Server server, String ip) {
		System.out.println("serverBuilder:call another client to connect");
		server.SendCommendVoice(ip);
	}

	public void LetAdminToConnect(Server fromServer, String ip) {
		System.out.println("serverBuilder:a client to call admin to connect");
		if (admin == null) {
			System.out.println("no admin");
			return;
		}
		fromServerList.addElement(fromServer);
		LetOneClientToConnect(admin, ip);
		System.out
				.println("ServerBuilder:new voice connect successful ,has voiceNum "
						+ serverList.size());
	}

	public void CloseAvoiceConnect(Server fromServer) {
		System.out
				.println("ServerBuilder:will remove voice connect,has voiceNum "
						+ serverList.size());
		fromServer.SendCommendEndVoice();
		fromServer.EndVoice();
		fromServerList.removeElement(fromServer);
		if (fromServerList.size() == 0) {// 没有与admin连的了
			admin.SendCommendEndVoice();
			admin.EndVoice();
		}
		System.out
				.println("ServerBuilder:remove voice connect successful ,has voiceNum "
						+ serverList.size());
	}

	public void CloseThisServer(Server server) {
		serverList.removeElement(server);
		System.out
				.println("ServerBuilder:remove server successfully,has serverNum "
						+ serverList.size());
	}

	public void SetAdmin(Server server) {
		admin = server;
		if (server != null) {
			System.out.println("serverBuilder:set admin successful");
		} else {
			System.out.println("serverBuilder:admin has leave");
		}
	}

	public void RequireTransferNoteFile(String ip) {
		System.out.println("ServerBuilder:one server want the note");
		fileIP = ip;
	}

	public void DeliverStateDate(StateData data) {
		System.out
				.println("ServerBuilder:deliver alldata to clients:,has serverNum "
						+ serverList.size());
		for (int i = 0; i < serverList.size(); i++) {
			serverList.elementAt(i).SendAllData(data);
		}
	}

	public void SendFile(String filePath) {
		if (fileIP == null) {
			System.out.println("ServerBuilder:No one require file");
			return;
		}
		System.out.println("ServerBuilder:send out a file");
		try {
			Socket fSocket = ClientBuilder.ConnectFileServer(fileIP);
			NetIO fIO = new NetIO(fSocket);
			FileInputStream fStream = new FileInputStream(filePath);
			int count = fStream.available();
			byte[] data = new byte[count];
			fStream.read(data);
			while (count != -1)
				fIO.WriteBytes(data);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void RecieveAllData(StateData data) {
		System.out.println("ServerBuilder:RecieveAllData");
	}

	public void RecieveInData(InnerPassengerCommandData data) {
		System.out.println("ServerBuilder:RecieveInData");
	}

	public void RecieveOutData(OuterPassengerCommandData data) {
		System.out.println("ServerBuilder:RecieveOutData");
	}

	public void RecieveAdminData(AdministratorCommandData data) {
		System.out.println("ServerBuilder:RecieveAdminData");
	}

}

⌨️ 快捷键说明

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