Lua语言使用TCP通信

首先我们下载一个网络调试助手方便调试,下载地址:http://free.cmsoft.cn/reslink.php?id=205,Lua语言使用的TCP通信只能发送以\n结尾的字符串。

TCP通信server.lua

--lua的TCP通信发送字符串末尾必须添加\n
--server
socket = require("socket")  --调用socket包
ip = "192.168.3.184" --程序设置自己为Server端,设置自己的ip地址
port = 8080 --设置端口

server = assert(socket.bind(ip, port))  --按照上面的参数开启服务器

ack = "ack\n"
while 1 do
    print("server: waiting for client connection...")
    control = assert(server:accept())   --等待客户端的连接,因此这个程序只能同时连接一个TCP客户端设备
    while 1 do
        command, status = control:receive() --等待字符信号发送过来
        if command == "closed" then
            break
        end
        if command ~= nil then
            print(command)
            control:send(ack)
        end
    end
end

TCP通信client.lua

--lua的TCP通信发送字符串末尾必须添加\n
--client
socket = require("socket")  --调用socket包
ip = "192.168.3.184"    --程序设置要了解的server端的ip地址
port = 8080 --设置端口

c = assert(socket.connect(ip, port))    --根据上边的参数连接server端,若未连接上直接报错

c:send("GET\n") --首先发送一个信号

while 1 do
    s, status, partial = c:receive()    --等待服务器发送过来的信号
    print(s)
    if status == "closed" then 
        break
    end
    str_send = io.read()    --等待输入要发送出去的信号
    str_send = str_send..'\n'
    c:send(str_send)
end

c:close()

程序功能测试

1、首先测试server程序,使用它和网络调试助手通信,网络调试助手设置为client

Lua语言使用TCP通信_第1张图片

2、测试client程序,网络调试助手设为server端,因为程序连接起来以后有两个等待语句,一个是等待接收,一个是等待输入待发送的信息,因此必须是server先发一个,然后client这里才能再发一个。

Lua语言使用TCP通信_第2张图片

3、测试这两个程序之间的通信,因为server在接收到之后可以自动发送一个ack字符串,所以每次都在client端输入待发送字符串即可。

Lua语言使用TCP通信_第3张图片

 

你可能感兴趣的:(Lua,lua)