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

时间:2016-05-19 05:43:08

标签: java sockets lua

我正在使用 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平台上运行。

1 个答案:

答案 0 :(得分:0)

您的Lua代码是TCP服务器,而不是UDP服务器。另外,请记住UDP是无连接的......

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

您可以使用property等标准工具来检查此类内容。