socketsextypes.cs
来自「ActiveSync数据同步」· CS 代码 · 共 643 行 · 第 1/2 页
CS
643 行
/// Common connection properties and methods.
/// </summary>
public interface ISocketConnection : ISocketConnectionInfo
{
/// <summary>
/// Set Socket Time To Live option
/// </summary>
/// <param name="value">
/// Value for TTL in seconds
/// </param>
void SetTTL(short value);
/// <summary>
/// Set Socket Linger option.
/// </summary>
/// <param name="lo">
/// LingerOption value to be set
/// </param>
void SetLinger(LingerOption lo);
/// <summary>
/// Set Socket Nagle algoritm.
/// </summary>
/// <param name="value">
/// Enable/Disable value
/// </param>
void SetNagle(bool value);
/// <summary>
/// Represents the connection as a IClientSocketConnection.
/// </summary>
/// <returns>
///
/// </returns>
IClientSocketConnection AsClientConnection();
/// <summary>
/// Represents the connection as a IServerSocketConnection.
/// </summary>
/// <returns></returns>
IServerSocketConnection AsServerConnection();
/// <summary>
/// Begin send data.
/// </summary>
/// <param name="buffer">
/// Data to be sent.
/// </param>
void BeginSend(byte[] buffer);
/// <summary>
/// Begin receive the data.
/// </summary>
void BeginReceive();
/// <summary>
/// Begin disconnect the connection.
/// </summary>
void BeginDisconnect();
}
#endregion
#region IClientSocketConnection
/// <summary>
/// Client connection methods.
/// </summary>
public interface IClientSocketConnection: ISocketConnection
{
/// <summary>
/// Proxy information.
/// </summary>
ProxyInfo ProxyInfo
{
get;
}
/// <summary>
/// Begin reconnect the connection.
/// </summary>
void BeginReconnect();
}
#endregion
#region IServerSocketConnection
/// <summary>
/// Server connection methods.
/// </summary>
public interface IServerSocketConnection: ISocketConnection
{
/// <summary>
/// Begin send data to all server connections.
/// </summary>
/// <param name="buffer">
/// Data to be sent.
/// </param>
/// <param name="includeMe">
/// Includes the current connection in send磗 loop
/// </param>
void BeginSendToAll(byte[] buffer, bool includeMe);
/// <summary>
/// Begin send data to the connection.
/// </summary>
/// <param name="connection">
/// The connection that the data will be sent.
/// </param>
/// <param name="buffer">
/// Data to be sent.
/// </param>
void BeginSendTo(ISocketConnection connection, byte[] buffer);
/// <summary>
/// Get the connection from the connectionId.
/// </summary>
/// <param name="connectionId">
/// The connectionId.
/// </param>
/// <returns>
/// ISocketConnection to use.
/// </returns>
ISocketConnection GetConnectionById(long connectionId);
/// <summary>
/// Get all the connections.
/// </summary>
ISocketConnection[] GetConnections();
}
#endregion
#endregion
#region ISocketService
/// <summary>
/// Socket service methods.
/// </summary>
public interface ISocketService
{
/// <summary>
/// Fired when connected.
/// </summary>
/// <param name="e">
/// Information about the connection.
/// </param>
void OnConnected(ConnectionEventArgs e);
/// <summary>
/// Fired when data arrives.
/// </summary>
/// <param name="e">
/// Information about the Message.
/// </param>
void OnReceived(MessageEventArgs e);
/// <summary>
/// Fired when data is sent.
/// </summary>
/// <param name="e">
/// Information about the Message.
/// </param>
void OnSent(MessageEventArgs e);
/// <summary>
/// Fired when disconnected.
/// </summary>
/// <param name="e">
/// Information about the connection.
/// </param>
void OnDisconnected(ConnectionEventArgs e);
/// <summary>
/// Fired when exception occurs.
/// </summary>
/// <param name="e">
/// Information about the exception and connection.
/// </param>
void OnException(ExceptionEventArgs e);
}
#endregion
#region ICryptoService
/// <summary>
/// Crypto service methods.
/// </summary>
public interface ICryptoService
{
/// <summary>
/// Fired when symmetric encryption is used.
/// </summary>
/// <param name="serverKey">
/// The RSA provider used to encrypt symmetric IV and Key.
/// </param>
///
void OnSymmetricAuthenticate(ISocketConnection connection, out RSACryptoServiceProvider serverKey, out byte[] signMessage);
/// <summary>
/// Fired when SSL encryption is used in client host.
/// </summary>
/// <param name="ServerName">
/// The host name in certificate.
/// </param>
/// <param name="certs">
/// The certification collection to be used (null if not using client certification).
/// </param>
/// <param name="checkRevocation">
/// Indicates if the certificated must be checked for revocation.
/// </param>
void OnSSLClientAuthenticate(ISocketConnection connection, out string ServerName, ref X509Certificate2Collection certs, ref bool checkRevocation);
/// <summary>
///
/// </summary>
/// <param name="connection"></param>
/// <param name="serverCertificate"></param>
/// <param name="chain"></param>
/// <param name="sslPolicyErrors"></param>
/// <param name="acceptCertificate"></param>
void OnSSLClientValidateServerCertificate(X509Certificate serverCertificate, X509Chain chain, SslPolicyErrors sslPolicyErrors, out bool acceptCertificate);
/// <summary>
/// Fired when SSL encryption is used in server host.
/// </summary>
/// <param name="certificate">
/// The certificate to be used.
/// </param>
/// <param name="clientAuthenticate">
/// Indicates if client connection will be authenticated (uses certificate).
/// </param>
/// <param name="checkRevocation">
/// Indicates if the certificated must be checked for revocation.
/// </param>
void OnSSLServerAuthenticate(ISocketConnection connection, out X509Certificate2 certificate, out bool clientAuthenticate, ref bool checkRevocation);
}
#endregion
#endregion
#region Classes
#region BaseSocketService
/// <summary>
/// Base class for ISocketServive. Use it overriding the virtual methods.
/// </summary>
public abstract class BaseSocketService : ISocketService
{
#region ISocketService Members
public virtual void OnConnected(ConnectionEventArgs e) { }
public virtual void OnSent(MessageEventArgs e) { }
public virtual void OnReceived(MessageEventArgs e) { }
public virtual void OnDisconnected(ConnectionEventArgs e) { }
public virtual void OnException(ExceptionEventArgs e) { }
#endregion
}
#endregion
#region BaseCryptoService
/// <summary>
/// Base class for ICryptoServive. Use it overriding the virtual methods.
/// </summary>
public abstract class BaseCryptoService : ICryptoService
{
#region ICryptoService Members
public virtual void OnSymmetricAuthenticate(ISocketConnection connection, out RSACryptoServiceProvider serverKey, out byte[] signMessage)
{
serverKey = new RSACryptoServiceProvider();
serverKey.Clear();
signMessage = new byte[0];
}
public virtual void OnSSLClientAuthenticate(ISocketConnection connection, out string serverName, ref X509Certificate2Collection certs, ref bool checkRevocation)
{
serverName = String.Empty;
}
public virtual void OnSSLServerAuthenticate(ISocketConnection connection, out X509Certificate2 certificate, out bool clientAuthenticate, ref bool checkRevocation)
{
certificate = new X509Certificate2();
clientAuthenticate = true;
}
public virtual void OnSSLClientValidateServerCertificate(X509Certificate serverCertificate, X509Chain chain, SslPolicyErrors sslPolicyErrors, out bool acceptCertificate)
{
acceptCertificate = false;
}
#endregion
}
#endregion
#endregion
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?