예제 #1
0
        private void SocketConnected(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError != SocketError.Success)
            {
                Debug.WriteLine("Failed to connect to server!");
                Debug.WriteLine(e.SocketError);

                _gameInfo.State = RunStates.GameError;
                return;
            }

            Debug.WriteLine("Successfully connected to the server...");

            // Update status display
            Deployment.Current.Dispatcher.BeginInvoke(() => _mainState.DisplayStatusMessage("Waiting for map..."));

            // Reconfigure socket to receive data
            byte[] response = new byte[2048];
            e.SetBuffer(response, 0, response.Length);

            // Switch event handlers for received data
            e.Completed -= SocketConnected;
            e.Completed += SocketDataReceived;

            // Set a 4KB receive buffer
            e.SetBuffer(new byte[ReceiveBufferSize], 0, ReceiveBufferSize);
            Socket socket = (Socket)e.UserToken;

            _receivedData = new MemoryStream();

            socket.ReceiveAsync(e);
        }