扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:zhuweisky 来源:博客园 2007年11月4日
关键字:
/// <summary> /// ISafeNetworkStream 线程安全的网络流 。 /// 注意:如果调用的异步的begin方法,就一定要调用对应的End方法,否则锁将得不到释放。 /// 作者:朱伟 sky.zhuwei@163.com /// </summary> public interface ISafeNetworkStream :ITcpSender ,ITcpReciever { void Flush(); void Close() ; } //用于在TCP连接上发送数据,支持同步和异步 public interface ITcpSender { void Write(byte[] buffer ,int offset ,int size) ; IAsyncResult BeginWrite(byte[] buffer, int offset, int size, AsyncCallback callback, object state ); void EndWrite(IAsyncResult asyncResult ); } //用于在TCP连接上接收数据,支持同步和异步 public interface ITcpReciever { int Read (byte[] buffer ,int offset ,int size) ; IAsyncResult BeginRead( byte[] buffer, int offset, int size, AsyncCallback callback, object state ); int EndRead(IAsyncResult asyncResult ); } |
public interface IXTcpListener { void Start() ; //开始或启动监听线程 void Stop() ; //暂停,但不退出监听线程 void ExitListenThread() ;//退出监听线程 event CBackUserLogon TcpConnectionEstablished ; //新的Tcp连接成功建立 event CallBackDynamicMsg DynamicMsgArrived ; } |
public interface IContextKey { NetStreamState StreamState{get ;set ;} //网络流的当前状态--空闲、忙碌 ISafeNetworkStream NetStream{get ;set ;} byte[] Buffer{get ;set ;} //接收缓冲区 int BytesRead{get ;set ;} //本次接收的字节数 int PreLeftDataLen{get ;set ;} bool IsFirstMsg{get ;set ;} //是否为建立连接后的第一条消息 int StartOffsetForRecieve{get ;} int MaxRecieveCapacity{get ;} //本次可以接收的最大字节数 RequestData RequestData{get ;} void ResetBuffer(byte[] leftData) ; //leftData 表示上次没有处理完的数据,需要与后面来的数据进行重组,然后再次处理 } |
public interface IContextKeyManager { void InsertContextKey(ContextKey context_key) ; void DisposeAllContextKey() ; bool IsAllStreamSafeToStop() ; //是否可以安全退出 void RemoveContextKey(int streamHashCode) ; int ConnectionCount {get ;} ISafeNetworkStream GetNetStream(int streamHashCode) ; event CallBackCountChanged StreamCountChanged ; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者