<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用SuperSocket開發聯網斗地主(一):聯網

      本章開始嘗試著開發一個聯網斗地主,感受一下webscoket的有趣。

      一、 新建一個winform程序,添加如下引用

      image

      界面編輯如下:

      image

      然后創建webscoket監聽代碼:

      webSocketServer = new WebSocketServer();
      
      var isSetup = webSocketServer.Setup("192.168.1.6", 2018);
      bar_Info.Text="服務器端啟動" + (isSetup ? "成功" : "失敗");
      if (!isSetup)
           return;
      
      webSocketServer.NewSessionConnected += WebSocketServer_NewSessionConnected;
      webSocketServer.SessionClosed += WebSocketServer_SessionClosed;
      webSocketServer.NewMessageReceived += WebSocketServer_NewMessageReceived;
      
      var isStart = webSocketServer.Start();
      bar_IpInfo.Text="服務器端偵聽" + (isStart ? "成功" : "失敗");

       

      分別實現這三個事件:

      /// <summary>
      /// 接收消息
      /// </summary>
      /// <param name="session"></param>
      /// <param name="value"></param>
      private  void WebSocketServer_NewMessageReceived(WebSocketSession session, string value)
      {
           txtMessage.Text+="接收消息 \r\n" + value;
      }
      

        

      /// <summary>
      /// 下線
      /// </summary>
      /// <param name="session"></param>
      /// <param name="value"></param>
      private  void WebSocketServer_SessionClosed(WebSocketSession session, SuperSocket.SocketBase.CloseReason value)
      {
           string message = string.Format("Session Close:{0},  IP:{1}\r\n", value.ToString(), session.RemoteEndPoint);
           txtMessage.Text += message;
      }

       

      /// <summary>
      /// 上線
      /// </summary>
      /// <param name="session"></param>
      private  void WebSocketServer_NewSessionConnected(WebSocketSession session)
      {
           string message = string.Format("Session:{0},  IP:{1}\r\n",
                   session.SessionID.ToString(), session.RemoteEndPoint);
           txtMessage.Text += message;
      }

       

              /// <summary>
              /// 給客戶端發送消息
              /// </summary>
              /// <param name="session"></param>
              /// <param name="message"></param>
              public void SendMessage(WebSocketSession session, string message)
              {
                  //Task.Factory.StartNew(() => { if (session != null && session.Connected) session.Send(message); });
                  if (session != null && session.Connected) session.Send(message);
              }

      重點在接收客戶端數據這里,根據客戶端發來的請求做出不同的響應:

      如客戶端發來“ready”服務端就知道這個客戶端已經準備好了,邏輯如下:

      //解密,校驗數據
      var data = JsonConvert.DeserializeObject<RequestModel>(value);
      switch (data.Action)
      {
           case "ready":
              //處理客戶端準備好的情況
               break;
          case "heart":
              //處理心跳
               break;
           default:
               break;
      }

      我們以斗地主為例,準備好的人數夠三個就開始游戲:

      if (DouDiZhuGameConfig.UserList.Count() < 3)
                   {
                       DouDiZhuGameConfig.UserList.Add(userSessionId,addUser);
                   }
                   return DouDiZhuGameConfig.UserList.Count() == 3 ? true : false;

      不夠就加入,然后客戶端給服務端發送每位用戶準備好的消息:

      cmd.action = "ready";
      cmd.message = JSON.stringify(user);
      //客戶端發送消息到服務端
      _ws.sendMessage(JSON.stringify(cmd));

       

      這里約定一個類,將指令和數據分開:

      public class RequestModel
      {
           public string Action { get; set; }
           public string Message { get; set; }
      }

       

      二、找三個瀏覽器,分別實驗

      啟動服務器,啟動三個客戶端,起名為111,222,333以示區別

      1

      然后點擊第一個客戶端的按鈕,就會提示等待,并且根據服務端收到的消息,說明客戶端已經成功連上服務器

      2

      然后點擊第二個客戶端:

      3

      服務端收到第二個客戶端的消息,由于人數不夠還未開局,繼續點擊第三個客戶端:

      4

      這下人數夠了,服務器分別給每個客戶端發送消息:可以開始游戲了

      代碼下載

      (說明:代碼素材了之類都來自網上,東拼西湊而來,具體來自哪里真的忘了,侵刪)

      posted @ 2022-01-01 14:03  石曼迪  Views(438)  Comments(0)    收藏  舉報
      瓴域建設-環保事業中心
      主站蜘蛛池模板: 无码专区人妻系列日韩精品 | 色综合久久精品亚洲国产| 国产午夜福利在线视频| 日韩伦人妻无码| 色伦专区97中文字幕| 亚洲香蕉av一区二区蜜桃| 国产一区二区三区日韩精品| 渭源县| 99在线 | 亚洲| 国产办公室秘书无码精品99| 精品无码国产一区二区三区51安| 亚洲欧美人成人综合在线播放| 天堂资源国产老熟女在线| 免费又爽又大又高潮视频| av天堂久久精品影音先锋| 旬邑县| 亚洲国产亚洲国产路线久久| 国产美熟女乱又伦AV果冻传媒| 国产精品v欧美精品∨日韩| 91老肥熟女九色老女人| 日本伊人色综合网| 日韩丝袜欧美人妻制服| 极品无码人妻巨屁股系列| 国产欧美日韩视频怡春院| 国产精品大全中文字幕| 日本丶国产丶欧美色综合| 国产精品久久久久久亚洲色| 亚洲一区久久蜜臀av| 国产精品女生自拍第一区| 欧美午夜成人片在线观看| 亚洲中文字幕无码爆乳| 日韩中文字幕高清有码| 国产99久60在线视频 | 传媒| 国产在线国偷精品免费看| 女同精品女同系列在线观看| 白白发布视频一区二区视频| 亚洲欧美综合精品成| 国产精品午夜福利免费看| 国产亚洲精品VA片在线播放| 国产suv精品一区二区四| 国产呦交精品免费视频|