0
私はコマンドを聞いて応答するソケットサーバーを持っています。応答は必ずしも同じ長さではない。 Pythonでは、サーバーからの応答が1024バイトより小さい場合でも、次のコードはうまく動作します。ルアソケットは長さが不明な文字列を受け取ります
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("localhost", 9999))
sock.sendall(bytes("command\n", 'utf-8'))
print(sock.recv(1024))
これを同等のルアコードに翻訳します。これは私の試みです:
socket = require("socket")
sock = socket.connect("localhost", 9999)
sock:send("command\n")
s, status, partial = sock:receive(1024)
print(s)
残念ながら、1024バイト未満の場合、受信コールはブロックされます。 Pythonクライアントは、伝送が終了していることと、なぜluaクライアントがまだ待機しているのかを知る方法はありますか?
つまり、私はサーバーの応答を変更する必要がありますか? – KrawallKurt
はい、実際のプロトコルを実装する必要があります。 – Daniel