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(); } }
//================== 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(); } }
//================== 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; }
//================== 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; }
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(); } }
//================== 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(); } }
//================== 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(); } }
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(); } } }
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(); } }
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(); } } }
//================== 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(); } }