📄 gamemultiserverthread.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 + -