我正在使用 UDP 客户端(用 Java 编写)和服务器(用的的Lua )。我正在为服务器使用Lua Socket,为客户端使用DatagramSockets。连接成功建立。问题是当Lua服务器向Java客户端发送字符串时,Java receive()函数不会获取数据和块。请帮帮我。
Lua服务器代码:
-- Server
local socket = require("socket")
host = host or "*"
port = port or 8080
s = assert(socket.bind(host, port))
c = assert(s:accept())
data = "hello"
while true
do
assert(c:send(data .. "\n"))
socket.sleep(1)
-- return 0;
end
Java客户端代码:
import java.net.*;
import java.io.*;
public class Clientnew
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = null;
byte[] Message = new byte[100];
try {
InetAddress IP = InetAddress.getLocalHost();
Socket client = new Socket(IP, 8080);
ds = new DatagramSocket(8080);
DatagramPacket dp = new DatagramPacket(Message, 1);
ds.receive(dp);
System.out.println("Recv\n");
String str = new String(dp.getData());
System.out.println(str);
} catch (Exception e)
{
} finally
{
if (ds != null)
{
ds.close();
}
}
}
}
两个程序都在Linux平台上运行。
答案 0 :(得分:0)
您的Lua代码是TCP服务器,而不是UDP服务器。另外,请记住UDP是无连接的......
http://w3.impa.br/~diego/software/luasocket/udp.html
您可以使用property
等标准工具来检查此类内容。