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

📄 gamemultiserverthread.java

📁 It is a MMORPG multithreading server. It can connect many clients using Java Connection socket.
💻 JAVA
字号:
import java.net.*;import java.io.*;import java.util.*;public class GameMultiServerThread extends Thread {    private Socket socket = null;	static public Vector PlayerList = new Vector();    public GameMultiServerThread(Socket socket) {	super("GameMultiServerThread");	this.socket = socket;    }    public void run() {		try {			OutputStream os = socket.getOutputStream();			InputStream is = socket.getInputStream();			Player p = new Player();			p.os = os;			p.is = is;				while (true)			{				StringBuffer sb = new StringBuffer();				int c = 0;					while (((c = is.read()) != '\n') && (c != -1)) {					sb.append((char) c);				}					if (c == -1) {					break;				}					ProcessInput(p,os,sb.toString());			}			os.close();			is.close();			socket.close();			} catch (IOException e) {		}    }	private void ProcessInput(Player p, OutputStream os, String s)	{		System.out.println(s);		if (s.substring(0,1).equals(Protocol.SEND_USERNAME))		{						for (int i=0; i<PlayerList.size(); i++ )			{				Player tp= (Player) PlayerList.elementAt(i);				SendToPlayer(p,Protocol.RECV_USERNAME+tp.username);			}						PlayerList.addElement(p);			p.username = s.substring(1,s.length()-1);			String msg = Protocol.RECV_USERNAME+p.username;			SendToOther(p, msg);//			CheckPlayer();		}else if (s.substring(0,1).equals(Protocol.SEND_CHAT))		{			String msg = Protocol.RECV_CHAT+p.username +": " + s.substring(1,s.length()-1);			SendToAll(msg);		}		else if (s.substring(0,1).equals(Protocol.SEND_POSITION))		{			System.out.println(s);			int x = Integer.parseInt(s.substring(1,3));			int y = Integer.parseInt(s.substring(3,5));			int dir = Integer.parseInt(s.substring(5,6));			System.out.println("x"+x+"y"+"dir"+dir);			p.posx = x;			p.posy = y;			p.dir = dir;			SendToAll(Protocol.RECV_POSITION+s.substring(1,s.length()-1)+p.username);//			SendToOther(p,Protocol.RECV_POSITION+s.substring(1,s.length()-1)+p.username);		}	}	private void CheckPlayer()	{		for (int i=0; i<PlayerList.size(); i++ )		{			Player p= (Player) PlayerList.elementAt(i);			System.out.println("Player "+p.username);		}	}    private void SendToPlayer(Player p, String msg)    {        try {			p.os.write(msg.getBytes());			p.os.write("\r\n".getBytes());        } catch (IOException ioe) {            ioe.printStackTrace();        }    }	private void SendToOther(Player p, String msg)	{		for (int i=0; i<PlayerList.size(); i++ )		{			Player tp= (Player) PlayerList.elementAt(i);			if (!p.username.equals(tp.username))			{				System.out.println(p.username + "send to "+tp.username);	            try {					tp.os.write(msg.getBytes());					tp.os.write("\r\n".getBytes());	            } catch (IOException ioe) {	                ioe.printStackTrace();	            }        	}		}	}	private void SendToAll(String msg)	{		for (int i=0; i<PlayerList.size(); i++ )		{			Player p= (Player) PlayerList.elementAt(i);            try {				p.os.write(msg.getBytes());				p.os.write("\r\n".getBytes());            } catch (IOException ioe) {                ioe.printStackTrace();            }		}	}}

⌨️ 快捷键说明

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