2016-05-19 2 views
0

Я работаю с UDPClient (написанный на Java ) и сервер (написанный в Lua). Я использую Lua Socket для сервера и DatagramSockets для клиента. Соединение устанавливается успешно. Проблема в том, что сервер Lua отправляет строку на Java-клиент, Java receive() Функция не получает данные и блокирует. PLS помочь мне.UDP соединение между сервером и клиентом Lua Java

код сервера 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

Ваш код Lua - это TCP-сервер, а не UDP-код. Кроме того, помните, что UDP не требует соединения ...

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

Вы можете использовать стандартные инструменты, такие как netstat, чтобы проверить вещи, как это.

Смежные вопросы