示例#1
0
        public async Task <bool> ConnectToServer(CancellationToken cancellationToken)
        {
            if (isConnected)
            {
                return(true);
            }

            // Start looking for server
            state = ClientState.LookingForServer;
            var task = FindServerBroadcast(cancellationToken);
            ReceivedBroadcastData broadcastData = await task;

            // Connect to the found server
            if (task.Status == TaskStatus.RanToCompletion)
            {
                connection = await host.ConnectWithConfirmation(broadcastData.senderAddress, broadcastData.broadcastMessagePort);

                if (connection != null)
                {
                    connection.OnDisconnectEvent.RegisterListenerOnce(HandleDisconnect);
                    connection.OnDataEvent.RegisterListenerOnce(HandleDataReceived);

                    state = ClientState.Connected;
                    HandleConnect();
                    return(true);
                }
                else
                {
                    state = ClientState.NotConnected;
                    return(false);
                }
            }
            else
            {
                state = ClientState.NotConnected;
                return(false);
            }
        }