diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index ccd0e01..5ef13d8 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -163,6 +163,7 @@
 // Enable RILC log
 #define RILC_LOG 1
 /*Warren add for t800 RIL service 2021_12_10 start*/
+#define LYNQ_RIL_FWK_IP "127.0.0.1"
 #define LYNQ_SOCKET_ENVNT_FD_MAX 100
 #define LYNQ_SERVICE_PORT 8088
 #define LYNQ_AT_SERVICE_PORT 8087
@@ -5927,7 +5928,7 @@
     struct sockaddr_in lynqClient_addr;
     bzero(&server_addr, sizeof(server_addr));
     server_addr.sin_family = AF_INET;
-    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+    server_addr.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
     server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
     /* create socket */
     //int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
diff --git a/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp b/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
index 17c3e40..e007262 100755
--- a/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
+++ b/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
@@ -115,6 +115,18 @@
         /*set uci*/
         return NULL;
     }
+    struct sockaddr_in liblynq_data_socket;
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+    int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
+        return NULL;
+    }
+    
     struct timeval timeOut;
     timeOut.tv_sec = 3;//timeout time 3s
     timeOut.tv_usec = 0;
diff --git a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
index ff45c02..3b084e0 100755
--- a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
@@ -666,6 +666,19 @@
         return -1;
     }
 
+    struct sockaddr_in liblynq_data_socket;
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+    int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+        return -1;
+    }
+
+
     LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
 
     memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -684,7 +697,6 @@
     BLOCK_RECV_MSG_UNLOCK(); 
 
 //    pthread_attr_t attr;
-    int ret;
 
     pthread_mutex_init(&s_sendto_mutex, NULL);   
     pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);   
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index b7498a6..0bff5b4 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -19,6 +19,8 @@
 #include "lynq_data_urc.h"
 
 #define LYNQ_SERVICE_PORT 8088
+#define LYNQ_RIL_FWK_IP "127.0.0.1"
+
 #define LYNQ_REC_BUF 8192
 #define LYNQ_REQUEST_PARAM_BUF 8192
 #define LYQN_SEDN_BUF 1024*8+sizeof(int)*3
@@ -497,10 +499,10 @@
 int send_request(int sockfd,lynq_client_t *client_tmp)
 {
     int ret=0;
-    ret = write(sockfd, client_tmp, LYQN_SEDN_BUF);
+    ret = sendto(sockfd,client_tmp,LYQN_SEDN_BUF,0,(struct sockaddr *)&lynq_data_socket_server_addr,lynq_data_socket_server_addr_len);
     if(ret==-1)
     {
-        perror("write error");
+        LYERRLOG("%s:errno code:%d",__FUNCTION__,errno);
         return -1;
     }
     return 0;
@@ -521,32 +523,36 @@
 /*Warren add for T800 platform 2021/11/19 start*/
 int lynq_socket_client_start()
 {
-    /* init lynq_socket_server_addr */
-    bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
-    lynq_data_socket_server_addr.sin_family = AF_INET;
-    lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
-    lynq_data_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
-    lynq_data_socket_server_addr_len = sizeof(lynq_data_socket_server_addr);
-    /*
-    if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
-    {
-        printf("[%s] is not a valid IPaddress\n", argv[1]);
-        exit(1);
-    }
-*/
-    lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
-    struct timeval timeOut; 
+    int ret;
+    struct timeval timeOut;
+    struct sockaddr_in liblynq_data_socket;
 
+    ret = 0;
     timeOut.tv_sec = 30;
     timeOut.tv_usec = 0; 
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
+    
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
 
+    //set ril service socket config
+    lynq_data_socket_server_addr.sin_family = AF_INET;
+    lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+    lynq_data_socket_server_addr.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
+    lynq_data_socket_server_addr_len = sizeof(lynq_data_socket_server_addr);
+
+    lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+    ret = bind(lynq_client_sockfd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+        return -1;
+    }
     if (setsockopt(lynq_client_sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0) 
     { 
-        LYERRLOG("time out setting failed"); 
-    } 
-    if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr)) == -1)
-    {
-        perror("connect error");
+        LYERRLOG("time out setting failed,errno:%d",errno);
         return -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 c3f7334..8ab8f34 100755
--- a/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
@@ -666,6 +666,18 @@
         return -1;
     }
 
+    struct sockaddr_in liblynq_data_socket;
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+    int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+        return -1;
+    }
+
     LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
 
     memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -684,7 +696,6 @@
     BLOCK_RECV_MSG_UNLOCK(); 
 
 //    pthread_attr_t attr;
-    int ret;
 
     pthread_mutex_init(&s_sendto_mutex, NULL);   
     pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);   
diff --git a/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
index 1fa5578..0099537 100755
--- a/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
@@ -102,6 +102,19 @@
     {
         return sock_fd;
     }
+
+    struct sockaddr_in liblynq_data_socket;
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+    int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
+        return -1;
+    }
+    
     struct timeval timeOut;
     timeOut.tv_sec = 60;
     timeOut.tv_usec = 0;
diff --git a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
index 4b6f020..d7c654e 100755
--- a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
@@ -692,6 +692,18 @@
         return -1;
     }
 
+    struct sockaddr_in liblynq_data_socket;
+    bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+    //set this lib socket config 
+    liblynq_data_socket.sin_family = AF_INET;
+    liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+    int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+    if (-1 == ret)
+    {
+        LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+        return -1;
+    }
+
     LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
 
     memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -710,7 +722,6 @@
     BLOCK_RECV_MSG_UNLOCK();
 
 //    pthread_attr_t attr;
-    int ret;
 
     pthread_mutex_init(&s_sendto_mutex, NULL);   
     pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);   
