1
大家好,我正在編寫我的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";
}
}
對於我有串隊列q其中我可以從另一個類添加字符串。這裏是我的服務器代碼:
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();