Просмотр исходного кода

Merge branch 'master' of gitee.com:openLuat/LuatOS

Wendal Chen 8 месяцев назад
Родитель
Сommit
bc102ad518

+ 19 - 12
module/Air8101/demo/errdump/errdump_tcp.lua

@@ -6,8 +6,7 @@
 local taskName = "TCP_TASK"
 local libnet = require "libnet"         -- libnet库,支持tcp、udp协议所用的同步阻塞接口
 local ip = "112.125.89.8"               -- 连接tcp服务器的ip地址
-local port = 45296                -- 连接tcp服务器的端口
-local netCB = nil                       -- socket服务的回调函数
+local port = 47043                -- 连接tcp服务器的端口
 local connect_state = false             -- 连接状态 true:已连接   false:未连接
 local protocol = false                  -- 通讯协议 true:UDP协议  false:TCP协议
 local ssl = false                       -- 加密传输 true:加密     false:不加密
@@ -37,23 +36,29 @@ sys.taskInit(function()
     sys.publish("net_ready")
 end)
 
+-- 处理未识别的消息
+local function tcp_client_main_cbfunc(msg)
+	log.info("tcp_client_main_cbfunc", msg[1], msg[2], msg[3], msg[4])
+end
+
 function TCP_TASK()
     -- 打印一下连接的目标ip和端口号
     log.info("connect ip: ", ip, "port:", port)
     sys.waitUntil("IP_READY")                -- 等待联网成功
-    netCB = socket.create(nil, taskName)     -- 创建socket对象
-    socket.debug(netCB, true)                -- 打开调试日志
-    socket.config(netCB, nil, protocol, ssl) -- 此配置为TCP连接,无SSL加密
+    local socket_client
     while true do
+        socket_client = socket.create(nil, taskName)     -- 创建socket对象
+        socket.debug(socket_client, true)                      -- 打开调试日志
+        socket.config(socket_client, nil, protocol, ssl)       -- 此配置为TCP连接,无SSL加密
         -- 连接服务器,返回是否连接成功
-        result = libnet.connect(taskName, 15000, netCB, ip, port)
+        result = libnet.connect(taskName, 15000, socket_client, ip, port)
         -- 如果连接成功,则改变连接状态参数,并且随便发一条数据到服务器,看服务器能不能收到
         if result then
             connect_state = true
-            libnet.tx(taskName, 0, netCB, "TCP  CONNECT")
+            libnet.tx(taskName, 0, socket_client, "TCP  CONNECT")
         end
         while result do
-            succ, param, _, _ = socket.rx(netCB, rx_buff) -- 接收数据
+            succ, param, _, _ = socket.rx(socket_client, rx_buff) -- 接收数据
             if not succ then
                 log.info("服务器断开了", succ, param, ip, port)
                 break
@@ -64,7 +69,7 @@ function TCP_TASK()
             end
             if tx_buff:used() > 0 then
                 log.info("发送到服务器数据,长度", tx_buff:used())
-                local result = libnet.tx(taskName, 0, netCB, tx_buff) -- 发送数据
+                local result = libnet.tx(taskName, 0, socket_client, tx_buff) -- 发送数据
                 if not result then
                     log.info("发送失败了", result, param)
                     break
@@ -78,7 +83,7 @@ function TCP_TASK()
             if rx_buff:len() > 1024 then
                 rx_buff:resize(1024)
             end
-            result, param = libnet.wait(taskName, 15000, netCB)
+            result, param = libnet.wait(taskName, 15000, socket_client)
             if not result then
                 log.info("服务器断开了", result, param)
                 break
@@ -86,9 +91,11 @@ function TCP_TASK()
         end
         -- 服务器断开后的行动,由于while true的影响,所以会再次重新执行进行 重新连接。
         connect_state = false
-        libnet.close(d1Name, 5000, netCB)
+        libnet.close(d1Name, 5000, socket_client)
+        socket.release(socket_client)
         tx_buff:clear(0)
         rx_buff:clear(0)
+        socket_client=nil
         sys.wait(1000)
     end
 end
@@ -138,6 +145,6 @@ end
 
 
 -- libnet库依赖于sysplus,所以只能通过sysplus.taskInitEx创建的任务函数中运行
-sysplus.taskInitEx(TCP_TASK, taskName, netCB) --启动tcp task
+sysplus.taskInitEx(TCP_TASK, taskName, tcp_client_main_cbfunc) --启动tcp task
 sys.taskInit(test_user_log) -- 启动errdemp测试任务
 sys.taskInit(test_error_log)--启动错误函数任务

+ 2 - 2
module/Air8101/demo/lowpower/tcp_client_main.lua

@@ -24,7 +24,7 @@ local tcp_client_sender = require "tcp_client_sender"
 -- 点击 打开TCP 按钮,会创建一个TCP server
 -- 将server的地址和端口赋值给下面这两个变量
 local SERVER_ADDR = "112.125.89.8"
-local SERVER_PORT = 42753
+local SERVER_PORT = 47043
 
 -- tcp_client_main的任务名
 local TASK_NAME = tcp_client_sender.TASK_NAME
@@ -54,7 +54,7 @@ local function tcp_client_main_task_func()
         log.info("tcp_client_main_task_func", "recv IP_READY")
 
         -- 创建socket client对象
-        socket_client = socket.create(socket.LWIP_STA, TASK_NAME)
+        socket_client = socket.create(nil, TASK_NAME)
         -- 如果创建socket client对象失败
         if not socket_client then
             log.error("tcp_client_main_task_func", "socket.create error")

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/tcp_client_main.lua

@@ -54,7 +54,7 @@ local function tcp_client_main_task_func()
         log.info("tcp_client_main_task_func", "recv IP_READY")
 
         -- 创建socket client对象
-        socket_client = socket.create(socket.LWIP_STA, TASK_NAME)
+        socket_client = socket.create(nil, TASK_NAME)
         -- 如果创建socket client对象失败
         if not socket_client then
             log.error("tcp_client_main_task_func", "socket.create error")

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/tcp_ssl_ca_main.lua

@@ -61,7 +61,7 @@ local function tcp_ssl_ca_main_task_func()
         log.info("tcp_ssl_ca_main_task_func", "recv IP_READY")
 
         -- 创建socket client对象
-        socket_client = socket.create(socket.LWIP_STA, TASK_NAME)
+        socket_client = socket.create(nil, TASK_NAME)
         -- 如果创建socket client对象失败
         if not socket_client then
             log.error("tcp_ssl_ca_main_task_func", "socket.create error")

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/tcp_ssl_main.lua

@@ -54,7 +54,7 @@ local function tcp_ssl_main_task_func()
         log.info("tcp_ssl_main_task_func", "recv IP_READY")
 
         -- 创建socket client对象
-        socket_client = socket.create(socket.LWIP_STA, TASK_NAME)
+        socket_client = socket.create(nil, TASK_NAME)
         -- 如果创建socket client对象失败
         if not socket_client then
             log.error("tcp_ssl_main_task_func", "socket.create error")

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/udp_client_main.lua

@@ -54,7 +54,7 @@ local function udp_client_main_task_func()
         log.info("udp_client_main_task_func", "recv IP_READY")
 
         -- 创建socket client对象
-        socket_client = socket.create(socket.LWIP_STA, TASK_NAME)
+        socket_client = socket.create(nil, TASK_NAME)
         -- 如果创建socket client对象失败
         if not socket_client then
             log.error("udp_client_main_task_func", "socket.create error")