3

私が取り組んでいるプロジェクトの LuaSocket を試しています。プロトコルとして UDP を選択しました。

オンラインでドキュメントとチュートリアルを探して、テストと学習用にクライアントとサーバーのペアを作成しようとしました。

私が読んだことによると、次のコードは機能するはずです。ただし、サーバーだけは正常に動作しているようです。クライアントはメッセージを送信しますが、サーバーからの応答を受け取りません。

どなたでもご利用いただけますので、どうぞよろしくお願いいたします。

サーバ:

-- Server
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setsockname("*", 53474)
udp:settimeout(0)

while true do
    data, ip, port = udp:receivefrom()
    if data then
        print("Received: ", data, ip, port)
        udp:sendto(data, ip, port)
    end
    socket.sleep(0.01)
end

クライアント:

-- Client
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setpeername("127.0.0.1", 53474)
udp:settimeout(0)

udp:send("Data!")
data = udp:receive()
if data then
    print("Received: ", data)
end
4

1 に答える 1

6

設定したタイムアウト値は です0。これにより、毎回クライアント タイムアウトが発生します。

これを修正するには、正のタイムアウト値を指定します。

udp:settimeout(1)

または、または負の値に設定するとnil、無期限にブロックされます。

udp:settimeout()

また

udp:settimeout(-1)
于 2015-01-23T08:40:44.633 に答える