コード例 #1
0
        private void OnSocketRead(IAsyncResult ar)
        {
            if (_hbTimer != null)
            {
                _hbTimer.ResetTimer();
            }


            Debug.Log("Beginning to receive socket data");
            int length = _stream.EndRead(ar);

            if (length <= 0)
            {
                Debug.Log("Someone disconnected");
                Debug.Log("The connection is -> " + _connectInfo);

                var message = new PrimeNetMessage
                {
                    MessageBody = ClientNumber.ToString(),
                    NetMessage  = _connectInfo.IsServer ? EPrimeNetMessage.ClientDisconnected : EPrimeNetMessage.ServerDisconnected,
                    SenderIP    = _connectInfo.HosHostAddress.ToString()
                };

                Debug.Log("HB Timer? " + _hbTimer != null);
                if (_hbTimer != null)
                {
                    Debug.Log("Stopping timer after disconnect from socket");
                    _hbTimer.Stop();
                }

                IsActive = false;

                Debug.Log("Is message being sent?");
                PublishDataReceived(new DataReceivedEvent(message.Serialize()));
                return;
            }

            string newMessage   = System.Text.Encoding.UTF8.GetString(buffer, 0, length);
            var    receivedData = System.Text.Encoding.Default.GetString(buffer);

            Debug.Log("Recieved message " + receivedData);
            PublishDataReceived(new DataReceivedEvent(receivedData));

            IsActive = true;

            // Clear current buffer and look for more data from the server
            Array.Clear(buffer, 0, buffer.Length);
            _stream.BeginRead(buffer, 0, buffer.Length, OnSocketRead, null);
        }
コード例 #2
0
        public void Broadcast2(PrimeNetMessage message)
        {
            Debug.Log("broadcasting message " + message.MessageBody);
            StatusMessage("broadcasting message " + message.MessageBody);

            foreach (var client in _clientList)
            {
                if (client.IsConnected())
                {
                    message.SenderIP = _conn.HosHostAddress.ToString();
                    StatusMessage("Sending to a connected client");
                    client.Send(message.Serialize());
                }
            }
        }
コード例 #3
0
        public void Disconnect()
        {
            if (_hbTimer != null)
            {
                _hbTimer.Stop();
            }

            PrimeNetMessage message = new PrimeNetMessage
            {
                MessageBody = "Disconnected from remote end",
                NetMessage  = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerDisconnected,
                SenderIP    = _connectInfo.HosHostAddress.ToString()
            };

            PublishDataReceived(new DataReceivedEvent(message.Serialize()));
        }
コード例 #4
0
        public void Read()
        {
            IsActive = true;


            PrimeNetMessage
                message = new PrimeNetMessage
            {
                MessageBody = ClientID.ToString(),
                NetMessage  = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerConnected,
                SenderIP    = _connectInfo.HosHostAddress.ToString()
            };

            PublishDataReceived(new DataReceivedEvent(message.Serialize()));

            Stream.BeginRead(buffer, 0, buffer.Length, OnRead, null);
        }
コード例 #5
0
        private void OnRead(IAsyncResult ar)
        {
            _hbTimer.ResetTimer();

            Debug.Log("OnRead: Beginning to receive data");
            int length = Stream.EndRead(ar);

            if (length <= 0)
            {
                Debug.Log("OnRead: Someone disconnected");

                PrimeNetMessage
                    message = new PrimeNetMessage
                {
                    MessageBody = ClientID.ToString(),
                    NetMessage  = _connectInfo.IsServer ? EPrimeNetMessage.ClientConnected : EPrimeNetMessage.ServerDisconnected,
                    SenderIP    = _connectInfo.HosHostAddress.ToString()
                };

                PublishDataReceived(new DataReceivedEvent(message.Serialize()));

                _hbTimer.Stop();

                IsActive = false;

                return;
            }

            if (length == 1) // HB
            {
            }

            string newMessage   = System.Text.Encoding.UTF8.GetString(buffer, 0, length);
            var    receivedData = System.Text.Encoding.Default.GetString(buffer);

            Debug.Log("Recieved message " + receivedData);
            PublishDataReceived(new DataReceivedEvent(receivedData));

            // Clear current buffer and look for more data from the server
            Array.Clear(buffer, 0, buffer.Length);
            Stream.BeginRead(buffer, 0, buffer.Length, OnRead, null);
        }
コード例 #6
0
        public void Broadcast(PrimeNetMessage message)
        {
            Debug.Log("Broadcasting message to socket {" + message.MessageBody);
            StatusMessage("broadcasting message " + message.MessageBody);

            foreach (var client in _clientList)
            {
                try
                {
                    if (client.IsSocketConnected())
                    {
                        message.SenderIP = _conn.HosHostAddress.ToString();
                        StatusMessage("Sending to a connected client");
                        client.SocketSend(message.Serialize());
                    }
                }
                catch (Exception ex)
                {
                    Debug.Log("Error sending message to a client - " + ex.Message);
                }
            }
        }
コード例 #7
0
        public void DirectMessage(Guid id, PrimeNetMessage message)
        {
            Debug.Log("Sending a message to specific client {" + message.MessageBody + "}");
            // StatusMessage("Sending message " + message.MessageBody);

            var client = _clientList.Find(x => x.ClientID == id);

            if (client != null)
            {
                try
                {
                    if (client.IsSocketConnected())
                    {
                        message.SenderIP = _conn.HosHostAddress.ToString();
                        StatusMessage("Sending to a connected client");
                        client.SocketSend(message.Serialize());
                    }
                }
                catch (Exception ex)
                {
                    Debug.Log("Error sending message to a client - " + ex.Message);
                }
            }
        }