Пример #1
0
 /// <summary>
 /// 关闭客户端,若为客户端模式,取消模式
 /// </summary>
 public static void AbortClient()
 {
     if (NetworkClient != null)
     {
         NetworkClient.Stop();
         _NetworkClient = null;
     }
     if (CurrentHostType.Equals(PHostType.Client))
     {
         CurrentHostType = PHostType.NoType;
     }
 }
Пример #2
0
 /// <summary>
 /// 建立单一服务器,用于全AI测试
 /// </summary>
 /// <param name="GameMap">游戏地图</param>
 /// <param name="GameMode">游戏模式</param>
 public static void CreateSingleServer(PMap GameMap, PMode GameMode)
 {
     AbortClient();
     CurrentHostType = PHostType.Server;
     PThread.Async(() => {
         _NetworkServer = new PServer()
         {
             maxConnectionNumber = GameMode.PlayerNumber,
             Game = new PGame(GameMap, GameMode)
         };
     });
 }
Пример #3
0
 /// <summary>
 /// 创建一个客户端,如果之前为服务器则将其关闭
 /// </summary>
 /// <param name="ServerIP">服务器的IP地址</param>
 /// <param name="Nickname">客户端的昵称</param>
 /// <returns>是否创建成功(IP地址正确、昵称长度不大于8且网络正常)</returns>
 public static bool CreateClient(string ServerIP, string Nickname)
 {
     if (Nickname.Length > PNetworkConfig.MaxNicknameLength)
     {
         return(false);
     }
     AbortServer();
     try {
         CurrentHostType = PHostType.Client;
         _NetworkClient  = new PClient(new TcpClient(ServerIP, PNetworkConfig.ServerPort));
     } catch {
         return(false);
     }
     CurrentNickname = Nickname;
     return(true);
 }
Пример #4
0
 /// <summary>
 /// 关闭服务器(及其关联的客户端),如果不为服务器模式则不操作
 /// </summary>
 public static void AbortServer()
 {
     if (CurrentHostType.Equals(PHostType.Server))
     {
         if (NetworkClient != null)
         {
             NetworkClient.Stop();
             _NetworkClient = null;
         }
         if (NetworkServer != null)
         {
             NetworkServer.Close();
             _NetworkServer = null;
         }
         CurrentHostType = PHostType.NoType;
     }
 }
Пример #5
0
 /// <summary>
 /// 建立服务器,同时建立和它连接的客户端
 /// </summary>
 /// <param name="GameMap">游戏地图</param>
 /// <param name="GameMode">游戏模式</param>
 public static void CreateServer(PMap GameMap, PMode GameMode)
 {
     AbortClient();
     CurrentHostType = PHostType.Server;
     PThread.Async(() => {
         _NetworkServer = new PServer()
         {
             maxConnectionNumber = GameMode.PlayerNumber,
             Game = new PGame(GameMap, GameMode)
         };
         Thread.Sleep(PNetworkConfig.ListenerInterval);
         try {
             _NetworkClient = new PClient(new TcpClient(PNetworkConfig.IP.ToString(), PNetworkConfig.ServerPort));
         } catch (Exception e) {
             PLogger.Log("服务器客户端创建错误");
             PLogger.Log(PNetworkConfig.IP.ToString());
             PLogger.Log(e.ToString());
         }
         CurrentNickname = PNetworkConfig.DefaultNickname;
     });
 }