Привет всем, я пишу сокет в моем приложении для Android. Он должен допускать только одного клиента. Интересно, что я хочу, чтобы мой сервер отправлял сообщения (строки) клиенту, пока они доступны. У меня очередь строк, из которых я хочу, чтобы мой сервер попытался взять строки на один и отправить клиенту, если пустая строка не отправляется и до тех пор, пока какая-то строка вставляется в очередь, отправьте ее. Вот как я могу это сделать:Серверный сокет в Java (Android)
public class Resource {
public static Queue<String> q = new LinkedList<String>();
public static synchronized void addString(String commands) {//for reader
semaphore.add(commands);
}
public synchronized String getString() {
if (!semaphore.isEmpty()) {
return semaphore.remove();
} else return "0";
}
}
Для этого у меня есть очереди д строки, где я могу добавить строки из другого класса. Вот мой код сервера:
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
// Listens for a connection to be made to this socket.
Socket socket = my_serverSocket.accept();
//send message to client
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("1");
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String msg = in.readLine();
System.out.println("message is: " + msg);
// tidy up
//in.close();
//socket.close();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (SecurityException se) {
se.printStackTrace();
}
}
}
}).start();