public static void main(String[] args) 
	{
		ServerSocket server_sock = null;
		Socket client_sock = null;

// Initialize the server socket
		MsgDumperCmnDef.WriteDebugSyslog(__FUNC__(), __LINE__(), "Initialize the server socket in MsgDumper daemon...");
		try
		{
			server_sock = new ServerSocket(MsgDumperCmnDef.SERVER_PORT_NO);
		}
		catch (IOException e)
		{
			MsgDumperCmnDef.WriteErrorFormatSyslog(__FUNC__(), __LINE__(), "ServerSocket() fail, due to: %s", e.toString());
			System.exit(1);
		}

		while (true)
		{
			MsgDumperCmnDef.WriteDebugSyslog(__FUNC__(), __LINE__(), "Server waits for client's request......");
			try
			{
				client_sock = server_sock.accept();
			}
			catch (IOException e)
			{
				MsgDumperCmnDef.WriteErrorFormatSyslog(__FUNC__(), __LINE__(), "accept() fail, due to: %s", e.toString());
				break;
			}
			MsgDumperCmnDef.WriteDebugFormatSyslog(__FUNC__(), __LINE__(), "Got a connection request from the remote[%s:%d]......", client_sock.getInetAddress(), client_sock.getPort());

// Create a worker thread to receive the data from the remote site
			MsgDumperCmnDef.WriteDebugFormatSyslog(__FUNC__(), __LINE__(), "Create another thread to receive the data from the remote[%s]", client_sock.getInetAddress());
			Thread client_socket_thread = new Thread(new MsgDumperDaemon(client_sock));
			client_socket_thread.start();
		}

		if (server_sock != null)
		{
			try 
			{
				server_sock.close();
				server_sock = null;
			}
			catch (IOException e) {}
		}
	}