1

次のようなものを使用して TCP メッセージを受信するたびに:

local socket=require "socket"
local sv=socket.bind("*",1337)
function love.update(dt)
    local s=sv:accept()
    while true do
        local s,e=s:receive()
        print(e or s)
    end
end

間隔をあけたhttpヘッダーで完全に正常に動作します\r\nが、http POSTを試みた場合、ヘッダーは正常に取得されますが、データは取得されません。魔女は後にあり、空の行(\ r\n\r\n)は同じことを行いますこれをクライアントとして使用する場合:

s.socket_write(h,"test1\r\ntest2\r\n\r\ntest3") -- (not luasocket)

test1 と test2 が表示されます

setOption 関数をいじってみましたが、うまくいきませんでした

データを受け取る方法はありますか?

4

2 に答える 2

2

何を期待しているのかわかりませんが、デフォルトの「モード」は1行を読み取ることであり、文字列"test1\r\ntest2\r\n\r\ntest3"には最後に改行がないため、receive呼び出しはその改行を待ちます。

通常、ヘッダーを読んだ後は、読みたいコンテンツの長さをすでに知っているので、それを行うことができますs:receive(number_of_bytes_to_read)(少なくともこれは私が行っていることであり、問​​題なく動作します)。

于 2013-07-24T22:59:04.140 に答える