Пример #1
0
 public void Stop()
 {
     rwlock_object.EnterWriteLock();
     try
     {
         if (STATE == TCPSTATE.CONNECT)
         {
             try {
                 socket_object.Shutdown(SocketShutdown.Both);
             }
             catch (SocketException e)
             {
                 logger.Print(LOGLEVEL.ERROR, e.Message + " Error code: " + e.ErrorCode + ".");
             }
             finally {
                 socket_object.Close();
             }
             STATE = TCPSTATE.STOP;
             logger.Print(LOGLEVEL.INFO, "Socket object Stop.");
         }
     }
     finally
     {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #2
0
 //==================
 public void Start()
 {
     rwlock_object.EnterWriteLock();
     try
     {
         if ((STATE == TCPSTATE.INSTALL) || (STATE == TCPSTATE.PAUSE))
         {
             STATE = TCPSTATE.CONNECT;
             Thread STR = new Thread(this.SendThread);
             send_thread = STR;
             send_thread.Start();
             Thread RTR = new Thread(this.ReceiveThread);
             receive_thread = RTR;
             receive_thread.Start();
             logger.Print(LOGLEVEL.INFO, "Start send-receive thread succesfully.");
         }
         else
         {
             logger.Print(LOGLEVEL.ERROR, "Invalid state to start send-receive thread.");
         }
     }
     finally
     {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #3
0
 //==================
 public TCPListener(LOGGER logObj)
 {
     logger        = logObj;
     rwlock_object = new ReaderWriterLockSlim();
     socket_buffer = new Queue();
     socket_buffer.Clear();
     socket_object = null;
     listen_thread = null;
     STATE         = TCPSTATE.FREE;
 }
Пример #4
0
 //==================
 public TCPObject(LOGGER logObj)
 {
     logger         = logObj;
     socket_object  = null;
     send_thread    = null;
     receive_thread = null;
     rwlock_object  = new ReaderWriterLockSlim();
     send_buffer    = new StringBuffer();
     receive_buffer = new StringBuffer();
     STATE          = TCPSTATE.FREE;
 }
Пример #5
0
 public void Stop()
 {
     rwlock_object.EnterWriteLock();
     try {
         if (STATE == TCPSTATE.LISTEN)
         {
             socket_object.Close();
             STATE = TCPSTATE.STOP;
             logger.Print(LOGLEVEL.INFO, "Listener stop listen.");
         }
     }
     finally {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #6
0
 //==================
 public void Reset()
 {
     Stop();
     rwlock_object.EnterWriteLock();
     try {
         if (STATE != TCPSTATE.FREE)
         {
             socket_buffer.Clear();
             socket_object = null;
             STATE         = TCPSTATE.FREE;
             logger.Print(LOGLEVEL.INFO, "Listener reset.");
         }
     }
     finally {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #7
0
 //==================
 public void Reset()
 {
     Stop();
     rwlock_object.EnterWriteLock();
     try
     {
         STATE         = TCPSTATE.FREE;
         socket_object = null;
         send_buffer.Clear();
         receive_buffer.Clear();
         logger.Print(LOGLEVEL.INFO, "Reset socket object.");
     }
     finally
     {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #8
0
        public void ConnectTo(string ip, int port)
        {
            Reset();
            bool fail = false;

            //connect
            rwlock_object.EnterWriteLock();
            try
            {
                Socket s = new Socket(SocketType.Stream, ProtocolType.Tcp);
                s.Connect(ip, port);
                socket_object = s;
            }
            catch (SocketException e)
            {
                fail = true;
                logger.Print(LOGLEVEL.ERROR, e.Message + " Error code: " + e.ErrorCode + ".");
            }
            finally
            {
                rwlock_object.ExitWriteLock();
            }
            //check
            if (fail)
            {
                Reset();
            }
            else
            {
                rwlock_object.EnterWriteLock();
                try
                {
                    logger.Print(LOGLEVEL.INFO, "Socket object connect succesfully.");
                    STATE = TCPSTATE.INSTALL;
                }
                finally
                {
                    rwlock_object.ExitWriteLock();
                }
            }
        }
Пример #9
0
 public void DirectSet(Socket s)
 {
     Reset();
     rwlock_object.EnterWriteLock();
     try
     {
         if (s != null)
         {
             socket_object = s;
             STATE         = TCPSTATE.INSTALL;
             logger.Print(LOGLEVEL.INFO, "Direct set socket object succesfully.");
         }
         else
         {
             logger.Print(LOGLEVEL.ERROR, "InValid socket object.");
         }
     }
     finally
     {
         rwlock_object.ExitWriteLock();
     }
 }
Пример #10
0
        public void Bind(int port)
        {
            Reset();
            bool fail = false;

            //connect
            rwlock_object.EnterWriteLock();
            try {
                Socket     s  = new Socket(SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint ep = new IPEndPoint(IPAddress.Any, port);
                s.Bind(ep);
                socket_object = s;
            }
            catch (SocketException e) {
                fail = true;
                logger.Print(LOGLEVEL.ERROR, e.Message + " Error code: " + e.ErrorCode + ".");
            }
            finally {
                rwlock_object.ExitWriteLock();
            }
            //check
            if (fail)
            {
                Reset();
            }
            else
            {
                rwlock_object.EnterWriteLock();
                try {
                    logger.Print(LOGLEVEL.INFO, "Listener bind succesfully.");
                    STATE = TCPSTATE.INSTALL;
                }
                finally {
                    rwlock_object.ExitWriteLock();
                }
            }
        }
Пример #11
0
 //==================
 public void Start()
 {
     rwlock_object.EnterWriteLock();
     try
     {
         if ((STATE == TCPSTATE.INSTALL) || (STATE == TCPSTATE.PAUSE))
         {
             bool state = true;
             try
             {
                 socket_object.Listen((int)GLOBAL.NETSOCK_MAX_CLIENT_COUNT);
             }
             catch (SocketException e)
             {
                 state = false;
                 logger.Print(LOGLEVEL.ERROR, e.Message + " Error code: " + e.ErrorCode + ".");
             }
             if (state)
             {
                 STATE = TCPSTATE.LISTEN;
                 Thread STR = new Thread(this.ListenThread);
                 listen_thread = STR;
                 listen_thread.Start();
                 logger.Print(LOGLEVEL.INFO, "Start listen thread succesfully.");
             }
         }
         else
         {
             logger.Print(LOGLEVEL.ERROR, "Invalid state to start listen thread.");
         }
     }
     finally
     {
         rwlock_object.ExitWriteLock();
     }
 }