diff --git a/src/transport/TcpTransport.cpp b/src/transport/TcpTransport.cpp
index 2c148e7..bbebc37 100644
--- a/src/transport/TcpTransport.cpp
+++ b/src/transport/TcpTransport.cpp
@@ -64,7 +64,8 @@
   struct sockaddr_in sin;
   memset(&sin, 0, sizeof(sin));
   sin.sin_family = AF_INET;
-  sin.sin_addr.s_addr = inet_addr(hostName.c_str());
+  sin.sin_addr.s_addr = getInetAddr(hostName);
+ 
   sin.sin_port = htons(portNumber);
 
   m_eventBase = event_base_new();
@@ -129,6 +130,48 @@
   }
 }
 
+u_long TcpTransport::getInetAddr(string &hostname)
+{
+	u_long addr = inet_addr(hostname.c_str());
+
+	if (INADDR_NONE == addr) {
+		constexpr size_t length = 128;
+		struct evutil_addrinfo hints;
+		struct evutil_addrinfo *answer = NULL;
+		/* Build the hints to tell getaddrinfo how to act. */
+		memset(&hints, 0, sizeof(hints));
+		hints.ai_family = AF_UNSPEC; /* v4 or v6 is fine. */
+		//Look up the hostname.
+		int err = evutil_getaddrinfo(hostname.c_str(), NULL, &hints, &answer);
+		if (err != 0) {
+			string info = "Failed to resolve  host name(" + hostname + "): " + evutil_gai_strerror(err);
+			THROW_MQEXCEPTION(MQClientException, info, -1);
+		}
+
+		struct evutil_addrinfo *addressInfo;
+		for (addressInfo = answer; addressInfo; addressInfo = addressInfo->ai_next) {
+			char buf[length];
+			const char *address = NULL;
+			if (addressInfo->ai_family == AF_INET) {
+				struct sockaddr_in *sin = (struct sockaddr_in*)addressInfo->ai_addr;
+				address = evutil_inet_ntop(AF_INET, &sin->sin_addr, buf, length);
+			}
+			else if (addressInfo->ai_family == AF_INET6) {
+				struct sockaddr_in6 *sin6 = (struct sockaddr_in6*)addressInfo->ai_addr;
+				address = evutil_inet_ntop(AF_INET6, &sin6->sin6_addr, buf, length);
+			}
+			if (address) {
+				addr = inet_addr(address);
+				if (addr != INADDR_NONE) {
+					break;
+				}
+			}
+		}
+	}
+
+	return addr;
+}
+
 void TcpTransport::disconnect(const string &addr) {
   boost::lock_guard<boost::mutex> lock(m_socketLock);
   if (getTcpConnectStatus() != e_connectInit) {
diff --git a/src/transport/TcpTransport.h b/src/transport/TcpTransport.h
index 544e14a..fa4da85 100755
--- a/src/transport/TcpTransport.h
+++ b/src/transport/TcpTransport.h
@@ -68,6 +68,7 @@
   void freeBufferEvent();
   void exitBaseDispatch();
   void setTcpConnectEvent(tcpConnectStatus connectStatus);
+  u_long getInetAddr(std::string &hostname);
 
  private:
   uint64_t m_startTime;
