Lua服务器和Java客户端之间的UDP连接问题

我正在使用 Java 编写的 UDP 客户端 和使用 Lua 编写的 服务器 进行工作。我在服务器上使用 Lua Socket,在客户端上使用 DatagramSockets。连接成功建立。问题是,当 Lua 服务器向 Java 客户端发送字符串时,Java 的 receive() 函数无法获取数据并被阻塞。请帮助我。

Lua 服务器代码:

-- 服务器

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 平台上运行。

点赞
用户1737
用户1737

你的 Lua 代码是一个 TCP 服务器,不是 UDP 服务器。同时,记住 UDP 是无连接的...

参考http://w3.impa.br/~diego/software/luasocket/udp.html

你可以使用类似 netstat 这样的标准工具来检查这些内容。

2016-05-19 08:22:51