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); } }
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); } }
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); }