Код на 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.