Exemplo n.º 1
0
    public void OnClicked()
    {
        NetClient client = new NetClient(Global.Network.IPAdress, Global.Network.Port);

        try
        {
            client.Connect();

            Packet.LoginReq login = new Packet.LoginReq
            {
                Name = "Offline"
            };
            client.Send(Packet.Type.LoginReq, login);
            Debug.Log("Send");

            PacketInfo info = new PacketInfo();
            client.TryGetPacket(out info);

            if (info.Type == Packet.Type.LoginAck)
            {
                //   Packet.LoginAck ack = Packet.LoginAck.Parser.ParseFrom(info.Payload);
            }
        }
        catch (System.Exception) {
            Debug.Log("Error");
        }
        finally
        {
            client.Close();
        }
    }
Exemplo n.º 2
0
 /// <summary>
 /// 로그인을 요청하는 함수. 기본 대기 시간 5.0초 함수 인자를 통하여 시간 조절 가능.
 /// </summary>
 /// <returns>로그인 후 서버에서 받는 데이터 없을 시 null</returns>
 /// <param name="PlayerName">플레이어 이름을 보냅니다. 아직 ID, PW개념은 없습니다.</param>
 public async Task<Packet.LoginAck> Login(string PlayerName, float waitForSecond = 5.0f)
 {
     try
     {
         // 서버가 꺼져 있을 경우. Throw 서버와 연결 시도.
         Network.Connect();
         Packet.LoginReq login = new Packet.LoginReq
         {
             Name = PlayerName
         };
         // 서버에게 데이터를 전달할수 없는 경우 Throw 발.
         Network.Send(Packet.Type.LoginReq, login);
     }
     catch (Exception)
     {
         // 예외가 발생 하면은 서버가 Offline이거나 데이터 네트워크의 불안정이므로 서버와의 연결을 끊습니.
         ClientNetworkId = 0;
         Network?.Close();
         return null;
     }
     // 서버에게 요청한 데이터, Login 데이터가 올 때 까지 대기합니다.
     var payload = await SetTimeOut(waitForSecond, Packet.Type.LoginAck);
     return Packet.LoginAck.Parser.ParseFrom(payload?.Payload);
 }