Пробую сделать бота на java для квика. Не получается получить ответ от java сервера.

Страницы: 1
RSS
Пробую сделать бота на java для квика. Не получается получить ответ от java сервера.
 
Код на lua:
Код
local socket = require('socket')

c = assert(socket.connect("localhost", 1111))

c:send("message:HELLO LUA")
s, e = c:receive()
message(s)
c:close()
Код на java:
Код
package bot.ext;

import bot.App;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server implements Runnable {
    private ServerSocket serverSocket;
    private boolean accept = true;
    private String messageDelim = "message:";

    private void messageReceive(String message, DataOutputStream out) {
        App.appendLog("Новое сообщение: " + message);
        try {
            out.write(("Receive: " + message).getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        try (ServerSocket server = new ServerSocket(1111)) {
            serverSocket = server;

            App.appendLog("Сервер запущен на порту: " + server.getLocalPort());

            while (accept && !server.isClosed()) {
                Socket client = server.accept();

                // Новый поток на обработку сообщений
                Thread receiveThread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        App.appendLog("Новый запрос");

                        try {
                            DataInputStream in = new DataInputStream(client.getInputStream());
                            DataOutputStream out = new DataOutputStream(client.getOutputStream());

                            while (!client.isClosed()) {
                                if (in.available() == 0) continue;

                                byte[] barr = new byte[in.available()];
                                in.read(barr);
                                String entry = new String(barr);

                                if(!entry.contains(messageDelim)) continue;

                                String[] messages = entry.split(messageDelim);

                                for (String message:messages) {
                                    if (message.equals("")) {
                                        continue;
                                    } else if (message.equals("close")) {
                                        client.close();
                                    }
                                    messageReceive(message, out);
                                }
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
                receiveThread.start();

            }
        } catch (IOException e) {
            App.appendLog("Не удалось запустить сервер");
        }
    }

    public boolean getAccept() {
        return accept;
    }

    public void setAccept(boolean accept) {
        this.accept = accept;
    }

    public ServerSocket getServerSocket() {
        return serverSocket;
    }
}
Для соединения с java использую библиотеку luasockets. Lua клиент отправляет сообщение, но зависает на получении сообщения от java.
Подскажите почему не получается получить сообщение от java.
 
Lua скрипт зависает на строке
Код
s, e = c:receive()
 
А серверный поток, обрабатывающий запрос, где при это находится?
Страницы: 1
Читают тему
Наверх