diff --git a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
index 792b312..2d5b0e8 100755
--- a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
@@ -55,7 +55,7 @@
 struct sockaddr_in module_rc_addr_serv;
 //struct sockaddr_in module_urc_addr_serv;
 static int module_rc_sock_fd = -1;
-static int module_urc_sock_fd = -1;
+//static int module_urc_sock_fd = -1;
 int module_urc_status = 1;
 int module_rc_status = 1;
 pthread_t module_urc_tid = -1;
@@ -328,7 +328,7 @@
     {
         bzero(urc_data,LYNQ_REC_BUF);
         //res = recvfrom(module_urc_sock_fd,urc_data,sizeof(urc_data),0,(struct sockaddr *)&module_urc_addr_serv,(socklen_t*)&module_len_urc_addr_serv);
-        res = lynq_recv_urc_msg(module_urc_sock_fd, urc_data,sizeof(urc_data));
+        res = lynq_recv_urc_msg(urc_data,sizeof(urc_data));
         if(res<sizeof(int32_t)*2)
         {
             LYERRLOG("thread_urc_recv step2 fail: res is %d",res);
@@ -492,13 +492,7 @@
 //    }
 
 //    return RESULT_OK;
-    module_urc_sock_fd = lynq_register_urc_socket();
-    if (module_urc_sock_fd <= 0)
-    {
-        module_urc_sock_fd = -1;
-        return RESULT_ERROR;
-    }
-    return RESULT_OK;
+    return lynq_register_urc_socket() > 0 ? RESULT_OK : RESULT_ERROR;
 }
 
 void lynq_close_urc_socket()
@@ -508,8 +502,6 @@
 //        close(module_urc_sock_fd);
 //        module_urc_sock_fd =-1;
 //    }
-    lynq_unregister_urc_socket(module_urc_sock_fd);
-    module_urc_sock_fd = -1;
 }
 
 int lynq_start_all_urc_socket_thread()
diff --git a/src/lynq/lib/liblynq-data/lynq_data_urc.cpp b/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
index 9c6ad71..d527ed2 100755
--- a/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
@@ -78,7 +78,7 @@
     {
         bzero(urc_data,LYNQ_REC_BUF);
 //        res = recvfrom(lynq_urc_sockfd,urc_data,sizeof(urc_data),0,(struct sockaddr *)&urc_local_addr,(socklen_t*)&lynq_len_urc_addr_serv);
-        res = lynq_recv_urc_msg(lynq_urc_sockfd, urc_data,sizeof(urc_data));
+        res = lynq_recv_urc_msg(urc_data,sizeof(urc_data));
         
         if(res<sizeof(int32_t)*2)
         {
@@ -198,24 +198,16 @@
 //        return -1;
 //    }
 //    return 0;
-    lynq_urc_sockfd = lynq_register_urc_socket();
-    if (lynq_urc_sockfd <= 0)
-    {
-        lynq_urc_sockfd = -1;
-        return -1;
-    }
-    return 0;
+    return lynq_register_urc_socket() > 0 ? 0 : -1;
 }
 
 int lynq_socket_recv_stop()
 {
-//    if (lynq_urc_sockfd >=0)
-//    {
-//        close(lynq_urc_sockfd);
-//        lynq_urc_sockfd = -1;
-//    }
-    lynq_unregister_urc_socket(lynq_urc_sockfd);
-    lynq_urc_sockfd = -1;
+    if (lynq_urc_sockfd >=0)
+    {
+        close(lynq_urc_sockfd);
+        lynq_urc_sockfd = -1;
+    }
     return 0;
 }
 
diff --git a/src/lynq/lib/liblynq-network/lynq_module_socket.cpp b/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
index de76578..48353dc 100755
--- a/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
@@ -55,7 +55,7 @@
 struct sockaddr_in module_rc_addr_serv;
 //struct sockaddr_in module_urc_addr_serv;
 static int module_rc_sock_fd = -1;
-static int module_urc_sock_fd = -1;
+//static int module_urc_sock_fd = -1;
 int module_urc_status = 1;
 int module_rc_status = 1;
 pthread_t module_urc_tid = -1;
@@ -328,7 +328,7 @@
     {
         bzero(urc_data,LYNQ_REC_BUF);
         //res = recvfrom(module_urc_sock_fd,urc_data,sizeof(urc_data),0,(struct sockaddr *)&module_urc_addr_serv,(socklen_t*)&module_len_urc_addr_serv);
-        res = lynq_recv_urc_msg(module_urc_sock_fd, urc_data,sizeof(urc_data));
+        res = lynq_recv_urc_msg(urc_data,sizeof(urc_data));
         if(res<sizeof(int32_t)*2)
         {
             LYERRLOG("thread_urc_recv step2 fail: res is %d",res);
@@ -491,13 +491,7 @@
 //        return RESULT_ERROR;
 //    }
 //    return RESULT_OK;
-    module_urc_sock_fd = lynq_register_urc_socket();
-    if (module_urc_sock_fd <= 0)
-    {
-        module_urc_sock_fd = -1;
-        return RESULT_ERROR;
-    }
-    return RESULT_OK;
+    return lynq_register_urc_socket() > 0 ? RESULT_OK : RESULT_ERROR;
 }
 
 void lynq_close_urc_socket()
@@ -507,8 +501,6 @@
 //        close(module_urc_sock_fd);
 //        module_urc_sock_fd =-1;
 //    }
-    lynq_unregister_urc_socket(module_urc_sock_fd);
-    module_urc_sock_fd = -1;
 }
 
 int lynq_start_all_urc_socket_thread()
diff --git a/src/lynq/lib/liblynq-shm/include/lynq_urc_socket.h b/src/lynq/lib/liblynq-shm/include/lynq_urc_socket.h
index 1bd12bb..866d5c2 100755
--- a/src/lynq/lib/liblynq-shm/include/lynq_urc_socket.h
+++ b/src/lynq/lib/liblynq-shm/include/lynq_urc_socket.h
@@ -17,8 +17,7 @@
 int lynq_open_broadcast_urc_socket();
 int lynq_broadcast_urc_msg(void * msg, int size);
 int lynq_register_urc_socket();
-int lynq_unregister_urc_socket(int fd);
-int lynq_recv_urc_msg(int fd, void * buffer, int size);
+int lynq_recv_urc_msg(void * buffer, int size);
 #ifdef __cplusplus
 }
 #endif 
diff --git a/src/lynq/lib/liblynq-shm/lynq_urc_socket.cpp b/src/lynq/lib/liblynq-shm/lynq_urc_socket.cpp
index acc7459..2ebf85f 100755
--- a/src/lynq/lib/liblynq-shm/lynq_urc_socket.cpp
+++ b/src/lynq/lib/liblynq-shm/lynq_urc_socket.cpp
@@ -12,15 +12,14 @@
 #include "lynq_urc_socket.h"
 #include "log/log.h"
 #include <list>
-#include <map>
 
 static int lynq_urc_socket_fd = 0;
+static int registered_urc_socket_port = 0;
+static int registered_urc_socket_fd = 0;
 
 static pthread_mutex_t s_urc_broadcast_mtx = PTHREAD_MUTEX_INITIALIZER;
 static std::list<struct sockaddr*> s_urc_broadcast_clients;
 
-static std::map<int ,int> s_socket_port_map;
-
 static pthread_mutex_t s_urc_register_mtx = PTHREAD_MUTEX_INITIALIZER;
 
 #define LYNQ_URC_SERVER_LISTEN_PORT 8086
@@ -96,8 +95,6 @@
     int ret = 0;
     int len_s;
     struct sockaddr_in addr_serv;
-    int registered_urc_socket_fd = -1;
-    int registered_urc_socket_port = -1;
     //Creating a Socket object
     pthread_mutex_lock(&s_urc_register_mtx);
     registered_urc_socket_fd=socket(AF_INET,SOCK_DGRAM,0);
@@ -131,57 +128,32 @@
     len_s = sendto(registered_urc_socket_fd, &registered_urc_socket_port, sizeof(registered_urc_socket_port), 0, (struct sockaddr *)&addr_serv,sizeof(addr_serv));
     printf("send result %d %d\n", len_s, errno);
 register_socket_exit:
-    s_socket_port_map.insert(registered_urc_socket_fd, registered_urc_socket_port);
     pthread_mutex_unlock(&s_urc_register_mtx);
     printf("init result %d\n", ret);
     return ret ==0 ? registered_urc_socket_fd : -1;
 }
 
-int lynq_unregister_urc_socket(int fd)
-{
-    pthread_mutex_lock(&s_urc_register_mtx);
-    auto it = s_socket_port_map.find(fd);
-    if (it != s_socket_port_map.end())
-    {
-        s_socket_port_map.erase(it);
-    }
-    pthread_mutex_unlock(&s_urc_register_mtx);
-    close(fd);
-    return 0;
-}
-
-int lynq_recv_urc_msg(int fd, void * buffer, int size)
+int lynq_recv_urc_msg(void * buffer, int size)
 {
     int ret = 0;
     struct sockaddr_in addr_serv;
     socklen_t len_addr_serv = sizeof(addr_serv);
-    int registered_urc_socket_port = -1;
     memset(&addr_serv, 0, sizeof(addr_serv));
-    if (fd <= 0) {
-        return -1;
-    }
     printf("client %ul to recv now\n", pthread_self());
     pthread_mutex_lock(&s_urc_register_mtx);
-    auto it = s_socket_port_map.find(fd);
-    if (it != s_socket_port_map.end())
-    {
-        registered_urc_socket_port = it->second;
-    }
-    pthread_mutex_unlock(&s_urc_register_mtx);
-    if (registered_urc_socket_port == -1)
-    {
+    if (registered_urc_socket_fd <= 0) {
+        pthread_mutex_unlock(&s_urc_register_mtx);
         return -1;
     }
-
     while(1)
     {
         memset(buffer, 0, 4);
-        ret = recvfrom(fd, buffer, size,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+        ret = recvfrom(registered_urc_socket_fd, buffer, size,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
         if (ret > 0 && LYNQ_URC_SERVER_LISTEN_PORT == ntohs(addr_serv.sin_port))
         {
-            if (ret == 4 && LYNQ_URC_SERVER_LISTEN_PORT == *((int*)buffer) && registered_urc_socket_port != -1)
+            if (ret == 4 && LYNQ_URC_SERVER_LISTEN_PORT == *((int*)buffer))
             {
-                sendto(fd, &registered_urc_socket_port, sizeof(registered_urc_socket_port), 0, (struct sockaddr *)&addr_serv,sizeof(addr_serv));
+                sendto(registered_urc_socket_fd, &registered_urc_socket_port, sizeof(registered_urc_socket_port), 0, (struct sockaddr *)&addr_serv,sizeof(addr_serv));
                 printf("to send ack of headbeat\n");
                 continue;
             }
@@ -193,6 +165,7 @@
         }
         break;
     }
+    pthread_mutex_unlock(&s_urc_register_mtx);
     printf("client %ul recv %d\n", pthread_self(), ret);
     return ret;
 }
diff --git a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
index 7aeae34..2f06cb4 100755
--- a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
@@ -55,7 +55,7 @@
 struct sockaddr_in module_rc_addr_serv;
 //struct sockaddr_in module_urc_addr_serv;
 static int module_rc_sock_fd = -1;
-static int module_urc_sock_fd = -1;
+//static int module_urc_sock_fd = -1;
 int module_urc_status = 1;
 int module_rc_status = 1;
 pthread_t module_urc_tid = -1;
@@ -326,7 +326,7 @@
     {
         bzero(urc_data,LYNQ_REC_BUF);
         //res = recvfrom(module_urc_sock_fd,urc_data,sizeof(urc_data),0,(struct sockaddr *)&module_urc_addr_serv,(socklen_t*)&module_len_urc_addr_serv);
-        res = lynq_recv_urc_msg(module_urc_sock_fd, urc_data,sizeof(urc_data));
+        res = lynq_recv_urc_msg(urc_data,sizeof(urc_data));
         if(res<sizeof(int32_t)*2)
         {
             LYERRLOG("thread_urc_recv step2 fail: res is %d",res);
@@ -496,13 +496,7 @@
 //        return RESULT_ERROR;
 //    }
 //    return RESULT_OK;
-    module_urc_sock_fd = lynq_register_urc_socket();
-    if (module_urc_sock_fd <= 0)
-    {
-        module_urc_sock_fd = -1;
-        return RESULT_ERROR;
-    }
-    return RESULT_OK;
+    return lynq_register_urc_socket() > 0 ? RESULT_OK : RESULT_ERROR;
 }
 
 void lynq_close_urc_socket()
@@ -512,8 +506,6 @@
 //        close(module_urc_sock_fd);
 //        module_urc_sock_fd =-1;
 //    }
-    lynq_unregister_urc_socket(module_urc_sock_fd);
-    module_urc_sock_fd = -1;
 }
 
 int lynq_start_all_urc_socket_thread()
