public bool Close() { try { serverCallBack = null; clientCallBack = null; if (socketTcp != null) { if (socketTcp.Connected) { socketTcp.Shutdown(SocketShutdown.Both); } socketTcp.Close(); } return(true); } catch (Exception arg) { SocketTools.LogMsg("Tcp关闭Socket错误:" + arg, LogLevel.Error); return(false); } }
private void ReceiveHeadData(IAsyncResult ar) { try { SocketPackage package = (SocketPackage)ar.AsyncState; if (socketTcp.Available == 0) { OnDisConnected(); Clear(); } else { int num = socketTcp.EndReceive(ar); if (num > 0) { package.headIndex += num; if (package.headIndex < package.headLength) { socketTcp.BeginReceive(package.headBuffer, package.headIndex, package.headLength - package.headIndex, SocketFlags.None, ReceiveHeadData, package); } else { package.InitBodyBuffer(); socketTcp.BeginReceive(package.bodyBuffer, 0, package.bodyLength, SocketFlags.None, ReceiveBodyData, package); } } else { OnDisConnected(); Clear(); } } } catch (Exception ex) { SocketTools.LogMsg("ReceiveHeadError:" + ex.Message, LogLevel.Error); } }
private void ClientConnectCallBack(IAsyncResult ar) { try { Socket socket = socketTcp.EndAccept(ar); T session = new T(); session.StartRcvData(socket, delegate { if (sessionList.Contains(session)) { sessionList.Remove(session); SocketTools.LogMsg("客户端断开连接......", LogLevel.Info); } }); sessionList.Add(session); SocketTools.LogMsg("Tcp连接客户端成功!正在接收数据......", LogLevel.Info); } catch (Exception ex) { SocketTools.LogMsg("Tcp服务器关闭:" + ex.Message, LogLevel.Error); serverCallBack?.Invoke(false); } socketTcp.BeginAccept(ClientConnectCallBack, socketTcp); }
protected virtual void OnDisConnected() { SocketTools.LogMsg("Session Disconnected.", LogLevel.Info); }
protected virtual void OnReciveMsg(string msg) { SocketTools.LogMsg("Receive Network Message.", LogLevel.Info); }
protected virtual void OnConnected() { SocketTools.LogMsg("New Seesion Connected.", LogLevel.Info); }
//protected override void Dispose(bool disposing) //{ // if (disposing) // { // if (!((components == null))) // { // components.Dispose(); // } // } // base.Dispose(disposing); //} private void Socket_OnAccept(object sender, SocketTools.SocketWrench.AcceptEventArgs e) { SessionClass oSession = null; System.Threading.Thread oThread = null; LastSessionId++; oSession = new SessionClass(); oSession.Server = this; oSession.Handle = e.Handle; oThread = new System.Threading.Thread(new System.Threading.ThreadStart(oSession.ThreadMain)); oThread.SetApartmentState(ApartmentState.STA); oThread.Name = "Session" + LastSessionId; oThread.Start(); }