Example #1
0
 public void Broadcast(SocketPackage package)
 {
     foreach (SocketConnection connection in Connections)
     {
         connection.Send(package);
     }
 }
        // ===============================================
        // 方法
        // ===============================================

        #region [方法][傳遞資料給使用者]
        public void Send(SocketPackage package)
        {
            if (_connection.Connected)
            {
                byte[] data = SocketPackage.Stream(package);
                _connection.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(_send_callback), _connection);
            }
        }
Example #3
0
 public void SendTo(User user, SocketPackage package)
 {
     try
     {
         Connections.Find(x => x.User == user).Send(package);
         OnSocketServerSendSuccess?.Invoke(this, user, package);
     }
     catch (Exception ex)
     {
         OnSocketServerSendFailed?.Invoke(this, user, package, ex);
     }
 }
Example #4
0
 public void Send(SocketPackage package)
 {
     try
     {
         if (_client != null)
         {
             _client.Send(SocketPackage.Stream(package));
             OnSocketClientSendSuccess?.Invoke(this, package);
         }
     }
     catch (Exception ex)
     {
         OnSocketClientSendFailed?.Invoke(this, ex);
     }
 }
        }                                       // 資料
        #endregion

        // ===============================================
        // 方法
        // ===============================================

        #region [方法][把SocketPackage轉換成byte[]]
        public static byte[] Stream(SocketPackage package)
        {
            byte[] data = null;
            if (package.Data != null && package.Data != String.Empty)
            {
                data = Encoding.Default.GetBytes(package.Data);
            }
            byte[] result = (data != null) ? new byte[4 + data.Length] : new byte[4];
            byte[] action = BitConverter.GetBytes((int)package.Action);
            Array.Copy(action, 0, result, 0, 4);
            if (data != null)
            {
                Array.Copy(data, 0, result, 4, data.Length);
            }

            return(result);
        }