亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tankserver.java

?? 基于尚學(xué)堂坦克大戰(zhàn)的基礎(chǔ)上開發(fā),支持多人對戰(zhàn),在線聊天,坦克大戰(zhàn)網(wǎng)絡(luò)版.
?? JAVA
字號(hào):
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;

import javax.swing.JApplet;

/**
 * TankWar2.0坦克大戰(zhàn)服務(wù)器
 * 
 * @author Nighelf暗夜精靈
 * 
 */
public class TankServer extends JApplet {

	public static int TCP_PORT = 8888; // 玩家加入游戲的TCP端口

	public static int TCP_EXIT_PORT = 9999; // 預(yù)留玩家退出的TCP端口

	public static int UDP_PORT = 7777; // UDP端口

	private int tankId = 1000; // 分配坦克的起始ID

	private int msgType = 1000;
	
	static int totalPlayer=8;

	ArrayList<Wall> walls = new ArrayList<Wall>(); // 預(yù)留服務(wù)器創(chuàng)建障礙物的列表

	private ArrayList<Client> clients = new ArrayList<Client>(); // 保存現(xiàn)在玩家信息的List,在線人數(shù)的判斷

	DatagramSocket ds = null;
	
	private ArrayList<Integer> removeTanksId = new ArrayList<Integer>(); //記錄退出玩家的ID,重復(fù)利用ID
	
	ServerSocket exitSer = null;
	Socket s2 = null;

	{
		int wallCount = (int) (Math.random() * 100) + 10;
		for (int i = 0; i < wallCount; i++) {
			int x = (int) (Math.random() * 800 + 40);
			int y = (int) (Math.random() * 600 - 40);
			int style = (int) (Math.random() * 10) % 3;

			// 使程序隨機(jī)到3的機(jī)率小一點(diǎn),類型3的障礙物是,油桶
			if (style == 3) {
				if ((int) (Math.random() * 10) != 0) {
					style = (int) (Math.random() * 10) % 3;
				}
			}
			walls.add(new Wall(x, y, style, null));
		}
	}

	public TankServer() {
		try {
			ds = new DatagramSocket(UDP_PORT);
			System.out.println("一個(gè)UDP端口" + UDP_PORT + "已啟動(dòng)");
			exitSer = new ServerSocket(TCP_EXIT_PORT);
			System.out.println("第二個(gè)TCP端口啟動(dòng)");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 讓TCP服務(wù)器保存新玩家的信息
	 */
	public void start() {
		UDPThread ut = new UDPThread();
		Socket s = null;
		ServerSocket ser = null;
		try {
			ser = new ServerSocket(TCP_PORT);
			while (true) {
				s = ser.accept();
				System.out.println(s.getInetAddress() + "已連接上服務(wù)器!");
				DataInputStream dis = new DataInputStream(s.getInputStream());
				DataOutputStream dos = new DataOutputStream(s.getOutputStream());
				if (clients.size() < totalPlayer) {
					int clientPort = dis.readInt();
					String ip = s.getInetAddress().getHostAddress();
					System.out.println(ip);
					Client client = new Client(ip, clientPort);
					clients.add(client);
					System.out.println("得到一個(gè)客戶端的IP和端口了!");
					//判斷空閑Id有沒有,有的話分配空閑Id
					if(removeTanksId.size()==0){
						
					dos.writeInt(tankId++);
					}
					else{
						System.out.println("加空閑Id這個(gè)的坦克!!");
						int tankId = removeTanksId.get(0);
						dos.writeInt(tankId);
						removeTanksId.remove(0);
					}
					
				} else {
					dos.writeInt(-1);
				}
				
				// 第二個(gè)TCP/IP端口,取消客戶端的用戶信息
				new Tcp2Thread();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				s.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	class Tcp2Thread implements Runnable {

		public Tcp2Thread() {
			new Thread(this).start();
		}

		public void run() {
			
			try {
				while (true) {
					s2 = exitSer.accept();
					System.out.println(s2.getInetAddress() + "第二個(gè)TCP端口得到數(shù)據(jù)");
					DataInputStream dis2 = new DataInputStream(s2
							.getInputStream());
					String exitip = s2.getInetAddress().getHostAddress();
					int exitport = dis2.readInt();
					int tankId = dis2.readInt();
					for (int i = 0; i < clients.size(); i++) {
						Client ec = (Client) clients.get(i);
						System.out.println("exitIP:"+exitip+"IP是否相等:"+exitip.equals(ec.getIp()));
						System.out.println("exitport:"+exitport+"port是否相等:"+(exitport==ec.getPort()));
						System.out.println("ClientIP:"+ec.getIp()+"port:"+ec.getPort());
						if (exitip.equals(ec.getIp())&&exitport==ec.getPort()) {
							clients.remove(ec);
							removeTanksId.add(tankId);
							System.out.println("空閑ID:"+removeTanksId.size());
							System.out.println(exitip + "的客戶端已刪除!");
							System.out.println("現(xiàn)在的在線人數(shù)有:"+clients.size()+"人");
						}
					}
					// 取得某個(gè)客戶端的IP將其刪除
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					s2.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * 讓服務(wù)器給所有玩家轉(zhuǎn)發(fā)消息
	 */
	class UDPThread implements Runnable {

		DatagramPacket dp;

		public UDPThread() {
			new Thread(this).start();
		}

		public void send() {
			try {
				for (int i = 0; i < clients.size(); i++) {
					Client client = (Client) clients.get(i);

					ByteArrayOutputStream baos = new ByteArrayOutputStream();
					DataOutputStream dos = new DataOutputStream(baos);
					dos.writeInt(msgType);
					dos.writeInt(clients.size());
					for (int j = 0; j < clients.size(); j++) {
						Client c = clients.get(i);
						dos.writeUTF(c.ip);
						dos.writeInt(c.port);
						System.out.println("發(fā)送第" + i + "個(gè)用戶包!!");

						byte[] buf = baos.toByteArray();
						dp.setSocketAddress(new InetSocketAddress(client.ip,
								client.port));
						dp.setPort(client.port);
						ds.send(dp);

					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		public void run() {

			while (true) {
				try {

					if (ds != null) {
						byte[] buf = new byte[1024];
						dp = new DatagramPacket(buf, buf.length);
						ds.receive(dp);
						System.out.println("服務(wù)器接收到一個(gè)UDP數(shù)據(jù)包");
						for (int i = 0; i < clients.size(); i++) {
							Client client = (Client) clients.get(i);
							dp.setSocketAddress(new InetSocketAddress(
									client.ip, client.port));
							dp.setPort(client.port);
							ds.send(dp);
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}

	}

	public static void main(String[] args) {
		new TankServer().start();
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费一级片91| 国产成人免费视频一区| 精品国产一区二区三区久久影院| 国产成人精品亚洲午夜麻豆| 午夜精品久久久久久久99水蜜桃| 国产亚洲一区二区在线观看| 欧美日韩亚洲不卡| 国产成人自拍网| 免费观看日韩电影| 亚洲在线视频网站| 中文字幕人成不卡一区| 日韩一区二区在线播放| 91麻豆精品一区二区三区| 美女高潮久久久| 亚洲一区二区三区在线播放| 国产精品日韩成人| 精品国产三级a在线观看| 欧美日韩亚洲综合一区| 色综合天天做天天爱| 国产精品2024| 久久er99精品| 日韩av二区在线播放| 一级日本不卡的影视| 亚洲视频一二三区| 国产亚洲一二三区| 精品欧美乱码久久久久久1区2区| 欧美中文一区二区三区| 99在线视频精品| 国产成人免费xxxxxxxx| 久久精品国产免费看久久精品| 亚洲高清不卡在线| 亚洲综合激情小说| 依依成人综合视频| 亚洲乱码日产精品bd| 国产精品高清亚洲| 国产嫩草影院久久久久| 久久免费偷拍视频| 久久综合网色—综合色88| 欧美一区二区日韩一区二区| 欧美日本一区二区三区四区| 欧美午夜不卡在线观看免费| 一本大道av伊人久久综合| 99精品黄色片免费大全| av中文字幕亚洲| av一区二区久久| 成人午夜精品一区二区三区| 国产成人福利片| 国产成人无遮挡在线视频| 国产酒店精品激情| 国产成人aaa| 99re8在线精品视频免费播放| 成人福利电影精品一区二区在线观看 | 美国精品在线观看| 丝袜亚洲另类丝袜在线| 日本伊人精品一区二区三区观看方式| 婷婷开心久久网| 免费人成在线不卡| 久久成人羞羞网站| 国产麻豆精品视频| 成人在线视频首页| 日本韩国精品在线| 正在播放亚洲一区| wwww国产精品欧美| 中文字幕免费在线观看视频一区| 中文字幕日本乱码精品影院| 亚洲成人一区二区在线观看| 日韩**一区毛片| 国产成人亚洲精品狼色在线 | 夫妻av一区二区| 色哦色哦哦色天天综合| 欧美视频日韩视频在线观看| 欧美一区二区性放荡片| 久久精品一级爱片| 一区二区三区欧美| 另类成人小视频在线| 成人涩涩免费视频| 欧美色图天堂网| 精品理论电影在线| ●精品国产综合乱码久久久久| 亚洲成年人影院| 国产69精品久久99不卡| 色偷偷成人一区二区三区91| 日韩视频中午一区| 18欧美亚洲精品| 免费在线欧美视频| 97久久精品人人澡人人爽| 91精品国产麻豆| 中文字幕在线免费不卡| 日本亚洲最大的色成网站www| 国产成人在线视频播放| 欧美精品一二三四| 1区2区3区国产精品| 久久国产成人午夜av影院| 97久久精品人人做人人爽| 日韩一级大片在线| 亚洲乱码一区二区三区在线观看| 国内久久精品视频| 在线观看日韩精品| 国产欧美1区2区3区| 日韩精品色哟哟| fc2成人免费人成在线观看播放| 日韩一二三四区| 一区二区三区在线免费观看| 国产精品123区| 欧美女孩性生活视频| 国产精品你懂的在线| 蜜桃一区二区三区在线观看| 色菇凉天天综合网| 国产精品免费视频网站| 久久99久久精品| 在线看日本不卡| 国产精品日日摸夜夜摸av| 极品尤物av久久免费看| 欧美日韩国产成人在线91 | 六月丁香婷婷久久| 精品视频在线视频| 1区2区3区国产精品| 成人性生交大片| 久久久久高清精品| 久88久久88久久久| 欧美一区日本一区韩国一区| 一区二区在线观看视频| 97精品国产露脸对白| 久久久综合九色合综国产精品| 日韩电影免费在线观看网站| 欧美专区日韩专区| 伊人性伊人情综合网| 色综合咪咪久久| 亚洲欧美视频一区| 一本一道综合狠狠老| 亚洲欧洲制服丝袜| 91麻豆精品视频| 最新成人av在线| 99re亚洲国产精品| 亚洲啪啪综合av一区二区三区| 91在线观看污| 中文字幕在线播放不卡一区| 成人理论电影网| 国产精品久久久久国产精品日日| 粉嫩蜜臀av国产精品网站| 国产欧美一区二区精品婷婷| 国产精品香蕉一区二区三区| 久久久久久久久伊人| 国产一区二区不卡在线| 日本一区免费视频| 国产精品123| 国产精品久久久久影院亚瑟| 99久久久久久| 亚洲精品成人精品456| 91在线精品一区二区| 亚洲乱码精品一二三四区日韩在线| 91久久精品一区二区| 亚洲国产精品久久久久秋霞影院 | 岛国精品在线播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 粉嫩绯色av一区二区在线观看| 国产精品入口麻豆九色| 色婷婷综合五月| 五月天网站亚洲| 26uuu国产一区二区三区| 丁香一区二区三区| 亚洲日本丝袜连裤袜办公室| 欧美日韩一区小说| 久久99国产精品尤物| 国产日产亚洲精品系列| 91麻豆自制传媒国产之光| 婷婷丁香激情综合| 久久久99免费| 色噜噜狠狠成人中文综合| 日韩福利电影在线| 国产欧美日韩另类一区| 91黄色在线观看| 美国精品在线观看| 国产精品第一页第二页第三页| 欧美少妇xxx| 国产乱子轮精品视频| 亚洲欧美一区二区三区孕妇| 欧美一级高清片| 99re这里只有精品首页| 免费观看久久久4p| **欧美大码日韩| 日韩一区二区在线免费观看| 成人h动漫精品一区二| 日韩精品一二三| 中文字幕精品—区二区四季| 欧美精品第1页| 成人午夜电影小说| 奇米一区二区三区| 国产精品成人一区二区三区夜夜夜| 欧美裸体bbwbbwbbw| 波多野结衣在线一区| 麻豆精品在线看| 亚洲一二三级电影| 欧美极品美女视频| 777午夜精品免费视频| 成年人午夜久久久| 国产一区二区三区高清播放| 视频在线观看91| 亚洲欧美日韩国产手机在线| 久久久美女艺术照精彩视频福利播放|