예제 #1
0
        private void Client_Load(object sender, EventArgs e)
        {
            Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);

            // Start connecting on load
            IAsyncResult result = socket.BeginConnect("cse3461-server.cloudapp.net", 34567, null, null);

            // Wait up to 5 seconds
            bool success = result.AsyncWaitHandle.WaitOne(5000, true);

            // Exit if failed
            if (!success)
            {
                socket.Close();

                MessageBox.Show("Unable to Connect", "Unable to connect", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Close();
                return;
            }

            // success, so create a transceiver and hook up events
            _xcvr = new MessageXcvr(socket);
            _xcvr.Disconnected += _xcvr_Disconnected;
            _xcvr.MessageReceived += _xcvr_MessageReceived;
        }
예제 #2
0
        /// <summary>
        /// Creates new client with a socket and a server reference
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="server"></param>
        public Client(Socket socket, Server server)
        {
            // Create a new transceiver
            _xcvr = new MessageXcvr(socket);

            // Setup to receive events
            _xcvr.MessageReceived += _xcvr_MessageReceived;
            _xcvr.Disconnected += _xcvr_Disconnected;

            // save the server
            _server = server;

            // initially in no group
            _group = null;

            // Send the connected client the server information
            _xcvr.Tx(new Message()
            {
                ServerInfo = new ServerInfo()
                {
                    Groups = _server.Groups.Select(x => x.Name).ToArray()
                }
            });
        }