CS通信

    xiaoxiao2021-03-25  153

    //卡牌信息需要的类库using System; using System.Collections.Generic; using System.Linq; using System.Text; //类库 namespace CardInformationDll { [Serializable] public class Card { private string id; private string property; private string name; private string attack; public override string ToString() { return string.Format("Id:" + this.id + "属性:" + property + "卡牌名称:" + name + "攻击力:" + attack); } public Card() { } public Card(string id, string property, string name, string attack) { this.id = id; this.property = property; this.name = name; this.attack = attack; } public string Id { get { return id; } set { id = value; } } public string Property { get { return property; } set { property = value; } } public string Name { get { return name; } set { name = value; } } public string Attack { get { return attack; } set { attack = value; } } } } //服务器代码段 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using OfficeOpenXml; using Server.GameServer; using System.Collections; using CardInformationDll; using GameNet.SerializableEntity; using Server.GameServer.ImpServer; using System.Net; using System.Net.Sockets; namespace CardGame_Server { class Server { static ArrayList CardList = new ArrayList(); static void Main(string[] args) { //加载信息 LoadInformation(); SocketServerFactory factory = new SocketServerFactory(); IServer server = factory.CreateServer(); IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName()); server.RegisterOnClientConnect(OnClientConnected); server.RegisterOnMessageReceive(OnReceiceClientMessage); server.Start(ip[1].ToString(), 6666, 100); //server.Start("127.0.0.1", 6666, 100); } //当客户端连接上时将卡牌列表信息发送给客户端 private static void OnClientConnected(RemoteClient client, Hashtable clientTable) { Message msg = new Message(); if (clientTable.Count == 1) { Console.WriteLine("第一个用户登录"); msg.Add("server", "blueclient"); msg.Add("cardlist", CardList); client.SendMessage(msg); } else { Console.WriteLine("第二个用户登录"); msg.Add("server", "redclient"); msg.Add("cardlist", CardList); client.SendMessage(msg); } } //接收客户端发来的消息 //选人完成 static bool isBlue = false; static bool isRed = false; static string blueword = ""; static string redword = ""; private static void OnReceiceClientMessage(RemoteClient client, Hashtable clientTable, Message msg) { object clientMsg = msg.Get("client"); if (clientMsg == null) return; #region -------------选人结束 //第一个客户端 if (clientMsg.Equals("blue")) { string blueindex = msg.Get("index").ToString(); string bluecardname = msg.Get("name").ToString(); blueword = blueindex; if (blueindex == null) return; msg.Remove("client"); msg.Add("server", "whereindex"); msg.Add("bindex", blueindex); msg.Add("cardname", bluecardname); foreach (RemoteClient everyClient in clientTable.Values) { if (client != everyClient) everyClient.SendMessage(msg); } } //第二个客户端 if (clientMsg.Equals("red")) { string redindex = msg.Get("index").ToString(); string redcardname = msg.Get("name").ToString(); redword = redindex; if (redindex == null) return; Console.WriteLine(redindex + "红色选人角色"); msg.Remove("client"); msg.Add("server", "whereindex"); msg.Add("rindex", redindex); msg.Add("cardname", redcardname); foreach (RemoteClient everyClient in clientTable.Values) { if (client != everyClient) everyClient.SendMessage(msg); } } if (blueword == "3" && redword == "3") { Console.WriteLine("游戏开始"); Message msgs = new Message(); msgs.Add("server", "action"); foreach (RemoteClient everyClient in clientTable.Values) { everyClient.SendMessage(msgs); } blueword = ""; redword = ""; } #endregion #region --------------告诉客户端选择的那几个英雄 //告诉每一个客户端蓝色方选择的第几个英雄 if (clientMsg.Equals("blueindex")) { string blueindex = msg.Get("index").ToString(); if (blueindex == null) return; Console.WriteLine(blueindex + "蓝色选人角色"); msg.Remove("client"); msg.Add("server", "whereindex"); msg.Add("bindex", blueindex); foreach (RemoteClient everyClient in clientTable.Values) { if (client != everyClient) everyClient.SendMessage(msg); } } //告诉每一个客户端红色方选择的第几个英雄 if (clientMsg.Equals("redindex")) { string redindex = msg.Get("index").ToString(); if (redindex == null) return; Console.WriteLine(redindex + "红色选人角色"); msg.Remove("client"); msg.Add("server", "whereindex"); msg.Add("rindex", redindex); foreach (RemoteClient everyClient in clientTable.Values) { if (client != everyClient) everyClient.SendMessage(msg); } } #endregion #region --------------判断两个客户端登录 并进入选人界面 //判断两个客户端登录 并进入选人界面 if (clientMsg.Equals("bluelogin")) { Console.WriteLine("----------------"); isBlue = true; } if (clientMsg.Equals("redlogin")) { Console.WriteLine("==============="); isRed = true; } if (isBlue == true && isRed == true) { Message msgs = new Message(); msgs.Add("server", "login"); foreach (RemoteClient item in clientTable.Values) { item.SendMessage(msgs); } isBlue = false; isRed = false; } #endregion } } } //需要引入的类库 引用 EPPlus 读取Excel表格引用 using System.IO; using OfficeOpenXml; using Server.GameServer; using System.Collections; using CardInformationDll; using GameNet.SerializableEntity; using Server.GameServer.ImpServer;
    转载请注明原文地址: https://ju.6miu.com/read-16069.html

    最新回复(0)