`
nbtlxx
  • 浏览: 253164 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

手机网络象棋开发(1): 服务器类Server介绍

阅读更多
为了更好的理解手机网络游戏的架构和开发技巧,本人在他人手机网络象棋的基本上,进一步进行网络通信部分的修改和优化,采用socket方式进行数据通信。

以下是server的Server.java的简介。

此类主要负责:
1. 游戏共用数据的初始化
   playerMap.clear()  玩家容器的清空
   Desk[]  遍历数组,赋控制

2. 启动serversocket, 等待client连接

3. 连接客户端后,将socket作为参数,启动独立线程独立读写、逻辑业务(第二篇重点描述)

具体代码如下:
/**
 * 
 */
package net.tuolian.newserver;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

/**
 * @author sean
 * 
 * @since 2009/06/18
 * 
 * 1.create serversocket 
 * 2. wait for new connection
 * 3. start thread to handle data and logic
 * 4.
 *
 */
public class Server {
	
	static int port=9999;
	static ServerSocket server;
	
	static final int DESKNUM = 10;			//总共游戏桌子数量

	public static int playerId = 1;			//默认玩家id为1

	public static Map<Integer, Player> playerMap = new HashMap<Integer, Player>();  //玩家容器
	
	public static int counter = 0;				//客户端连接累计数,即玩家id的依据

	static Desk[] desks = new Desk[10];			//桌子数组
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 初始化
		
		init();
		
		try {
			server = new ServerSocket(port);
			System.out.println("服务器端已启动:" + port);
			
			while(true){
				System.out.println("ready to accept new client");
				Socket socket = server.accept();
				System.out.println("accepted a client: " + socket.getRemoteSocketAddress());
				
				//此处需要修改,目前每个客户端登录,启动专门线程,耗费资源
				new Network(socket).start();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			if( server != null){
				try {
					server.close();
					server = null;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}
		
		
	}
	
	private static void init() {
		// TODO 服务器server的初始化动作,playerMap情况, 桌子情况
		
		//初始化工作
		playerMap.clear();
		
		for (int i = 0; i < DESKNUM; i++) {
			desks[i] = new Desk();
			desks[i].setID(i);
		}
	}

	/**
	 * 发送消息类
	 * 主要工作就是发送到队列
	 * 由发送线程去除队列中消息,进行依次发送
	 * 
	 * @param player
	 * @param m
	 *
	 */
	public static void sendMessage(Player player, String message) {
		// TODO 改写sendMessage方法,按照msg方式进行封装,并且压入消息队列中
		int cmdType = Message.GAME_RESP;
		Message msg = new Message(cmdType, message);
		msg.setPlayerId(player.getID());
		player.data.push(msg);
		System.out.println("游戏中消息发送完毕:"+ msg.getMessage());
	}
}

1
0
分享到:
评论

相关推荐

    基于socket手机网络象棋开发

    通过上述分析可以看出,“基于socket手机网络象棋开发”项目的服务器端实现了良好的初始化机制、客户端连接管理和数据处理逻辑。整个系统采用了高效的多线程处理方式,确保了在网络环境下游戏的流畅性和稳定性。此外...

    VB开发象棋游戏(服务器端与客户端)

    【标题】"VB开发象棋游戏(服务器端与客户端)"揭示了这是一个使用Visual Basic(VB)编程语言开发的项目,旨在创建一个完整的网络象棋游戏。游戏包含两个主要组成部分:服务器端和客户端。服务器端作为游戏的中枢,...

    C#源码 中国象棋网络版

    4. **Server Management**:服务器端代码,处理客户端连接、请求处理、状态同步等。 5. **Database Integration**:数据库操作接口,用于用户管理和游戏记录存储。 6. **Error Handling & Logging**:错误处理和日志...

    java 网络编程 象棋

    在IT行业中,网络编程是一项核心技能,特别是在开发多人在线游戏或应用时,如我们的主题——Java版象棋。网络编程允许不同的计算机通过网络进行通信,实现数据交换和资源共享。在这个项目中,我们将深入探讨如何使用...

    java手机网络游戏之象棋

    综上所述,开发一个基于J2ME的手机网络游戏象棋涉及到多方面的技术,包括J2ME框架、Eclipse开发环境、SQL Server数据库交互、网络通信、游戏逻辑实现以及用户体验优化。通过这些技术的综合运用,我们可以创建出一款...

    中国象棋网络版

    【中国象棋网络版】是一款基于C#编程语言在Windows平台上开发的网络象棋游戏,其设计理念是模拟并拓展了类似QQ游戏中的中国象棋体验。这款游戏不仅保留了传统象棋的基本规则,还融入了网络对战的功能,使得玩家可以...

    CS框架下的中国象棋网络游戏代码

    在这个项目中,"CS框架下的中国象棋网络游戏代码"指的是客户端-服务器(Client-Server)架构,这种架构模式广泛应用于网络游戏设计。客户端负责用户界面和交互,而服务器端处理游戏状态和逻辑,确保游戏的公平性和...

    winform 网络版象棋对战

    【标题】"winform 网络版象棋对战" 涉及的主要知识点是使用Windows Forms(winform)开发一款能够在局域网内进行对战的在线象棋游戏。Windows Forms是.NET Framework的一部分,它提供了一种创建桌面应用程序的方式,...

    中国象棋网络版C#源码(1).rar

    【标题】"中国象棋网络版C#源码(1).rar" 提供的是一个基于C#编程语言实现的中国象棋在线游戏的源代码。这个压缩包可能包含了一个完整的项目结构,允许开发者查看和学习如何构建一个网络化的棋类游戏。 【描述】中的...

    基于python的网络版中国象棋

    1. `server.py`:服务器端程序,负责管理游戏状态和玩家间的通信。 2. `main.py`:客户端程序,每个玩家各运行一次,用于用户交互和游戏逻辑。 3. `config.py`或`config.json`:配置文件,包含IP地址和端口等网络...

    web象棋游戏 开源

    1. **B/S结构**:B/S(Browser/Server)结构,也称为浏览器/服务器模式,是现代互联网应用中常见的一种架构模式。用户通过浏览器访问服务器上的应用程序,无需在本地安装客户端软件,降低了用户使用的门槛。 2. **...

    中国象棋网络版源代码

    3. **网络编程**:源代码中的网络部分涉及到TCP/IP协议,可能使用了C#的System.Net命名空间,通过Socket类实现客户端和服务器之间的数据传输,确保棋局信息的实时同步。 4. **多线程**:为了保证游戏的流畅性,源...

    c#中国象棋网络版(无ai)

    《C#实现的中国象棋网络版》是一个基于C#编程语言开发的在线对弈平台,主要用于学习和参考。这个项目可能并未完全实现所有功能,但依然能够为我们提供关于网络版棋类游戏开发的一些关键知识点。 一、C#语言基础 C#...

    网络对战象棋 大作业说明1

    网络对战象棋大作业是一项基于Qt框架的编程任务,旨在让学习者开发一个支持网络对战功能的中国象棋软件。这个项目不仅要求实现基本的棋盘游戏逻辑,还要包含网络连接、游戏状态保存与恢复以及残局的输入与对战等功能...

    C#版中国象棋(游戏大厅版)

    游戏大厅系统通常包含服务器端和客户端两部分,遵循C/S(Client/Server)架构。服务器端负责管理在线用户、创建和管理游戏房间,以及处理客户端之间的通信。客户端则负责显示游戏大厅、用户登录、创建或加入游戏房间...

    手机网络游戏 服务器端配置 客户端发布与运行 配置源程序.docx

    《手机网络游戏 服务器端配置 客户端发布与运行 配置源程序》这份文档主要介绍了手机网络游戏在服务器端和客户端的配置与发布过程。以下是详细的解析: 1. **服务器端配置** - 首先,需要将包含服务器端程序的...

    java象棋课程设计.doc

    1. **系统架构**:采用客户端-服务器(Client-Server)模式,利用Socket进行网络通信,实现多客户端间的实时交互。采用多线程技术确保游戏流畅运行。 2. **界面设计**:使用Java Swing技术构建用户界面,包括棋盘的...

    中国象棋(C#)源码

    3. **网络编程**:使用System.Net命名空间的类,如Socket,来实现客户端与服务器之间的数据传输,确保玩家间的游戏状态同步。 4. **多线程**:为了处理用户的输入和网络通信,可能需要用到多线程,以确保程序的响应...

    网络中国象棋对战(java)

    本项目“网络中国象棋对战”正是这样一款基于Java编程语言开发的在线对战平台,旨在为用户提供便捷、真实的象棋对弈体验。下面我们将深入探讨该项目的技术细节与实现方法。 首先,Java作为一种跨平台的编程语言,因...

    Asp.net中国象棋 主要是Js完成

    【标题】"Asp.net中国象棋 主要是Js完成" 指的是一款基于ASP.NET技术构建的在线中国象棋游戏,其核心功能主要是通过JavaScript实现。JavaScript是一种广泛用于网页和浏览器的应用程序脚本语言,它在此项目中起到了...

Global site tag (gtag.js) - Google Analytics