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

📄 messageadapter.java

📁 是一款国外的网络游戏平台的源码*不是类似浩方那种虚拟局域网技术
💻 JAVA
字号:
/*
 * Created on May 28, 2005
 * Handles message related communication between
 * the client and server. This method favored over using
 *  
 */
package org.GTADS.messenger;

import org.GTADS.debug.ServerLogger;
import java.net.*;
import java.io.*;
import org.GTADS.server.*;
import org.GTADS.protocol.*;
import java.util.Vector;
import org.GTADS.helper.*;
import org.GTADS.client.*;
import org.GTADS.usermanager.*;

/**
 * @author Steven Day
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class MessageAdapter extends Thread {

	public static boolean sendData(Object user, Object clientReceive, MetaData metadata, String message) throws IOException {
		DataOutputStream dout;
		
		if (clientReceive != null) {
			if (clientReceive instanceof Socket) {
				if (Helper.isServer())
					dout = (DataOutputStream)ServerCacheHandler.socketStreamCache.get((Socket)clientReceive);
				else
					dout = new DataOutputStream(((Socket)clientReceive).getOutputStream());
						
				return ProtocolHandler.toClient(dout, metadata.getMetaDataAsString(), message);
			}
			else if (clientReceive instanceof DataOutputStream)
				return ProtocolHandler.toClient((DataOutputStream)clientReceive, metadata.getMetaDataAsString(), message);
		}
		return false;
	}
	
	public static boolean sendToAll(MetaData metadata, String message){
		Vector listOfDataStreams = new Vector(ServerCacheHandler.socketStreamCache.values());
		Vector listOfSockets = new Vector(ServerCacheHandler.userSocketCache.values());
		try {
			for (int i = 0; i < listOfSockets.size(); i++){
				if (listOfSockets.elementAt(i) == null || ((Socket)listOfSockets.elementAt(i)).isClosed())
					continue;
				sendData(null, listOfSockets.elementAt(i),metadata,message);
			}
			return true;
		} catch (IOException ie) {
			ServerLogger.sendConsoleDebugMessage("Send to all failed ", MessageAdapter.class, 5);
			
		}
		return false;
	}
	
	public static boolean sendToChatroom(MetaData metadata, String chatroom, String message) throws IOException{
		Chatroom thisChatroom = (Chatroom)ServerCacheHandler.chatroomNameCache.get(chatroom);
		Vector usersInChatroom = new Vector();
		
		if (thisChatroom == null || thisChatroom.getListOfUsers().isEmpty()){
			return false;
		}
		
		usersInChatroom = thisChatroom.getListOfUsers();
		
		for (int i = 0; i < usersInChatroom.size(); i++){
			String userOnList = usersInChatroom.elementAt(i).toString();
			Socket chatroomUserSocket = (Socket)ServerCacheHandler.userSocketCache.get(userOnList);
			if (chatroomUserSocket == null){
				ServerLogger.sendConsoleDebugMessage("Socket broken for user " 
						+ userOnList + ". Recommended action: kill the user", MessageAdapter.class);
				continue;
			}
			MessageAdapter.sendData(null, chatroomUserSocket, metadata, message);
		}
		return true;
	}
	
	public static MetaData getMetaDataFromString(String message){
		String dataLine[] = new String[4];
		if (message.split(",").length < 4)
			return null;
		else {
			dataLine = message.split(",");
			return new MetaData(dataLine[0], Integer.valueOf(dataLine[1]).intValue(), dataLine[2]);
		}
	}
	
	public static String getMessageFromString(String message){
		String dataLine[] = new String[4];
		if (message.split(",").length != 4)
			return null;
		else {
			dataLine = message.split(",");
			return dataLine[3];
		}
	}
	
	public static boolean joinChatroom(String chatroom) throws IOException{
		MetaData joinChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.JOIN_CHATROOM);
		MessageAdapter.sendData(null, DSChatClient.ClientSocket, joinChatHeader, chatroom);
		return false;
	}
	
	public static boolean partChatroom(String chatroom) throws IOException{
		MetaData partChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.PART_CHATROOM);
		MessageAdapter.sendData(null, DSChatClient.ClientSocket, partChatHeader, chatroom);
		return false;
	}
	
	public static boolean quitServer(String chatroom) throws IOException{
		MetaData partChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.QUIT_CHATROOM);
		MessageAdapter.sendData(null, DSChatClient.ClientSocket, partChatHeader, chatroom);
		return false;
	}
	
	public static void serverKickUser(String userToKick) throws IOException {
		MetaData serverKickHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.S_KICK);
		MessageAdapter.sendData(null, DSChatClient.ClientSocket, serverKickHeader, userToKick);
	}
	
	public static String listenForResponse(Socket s){return "foo";}
}

⌨️ 快捷键说明

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