Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
 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);
 }
Beispiel #7
0
 //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();
 }