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(); } }
/// <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); }