プッシュサーバーについてもう1つ質問があります。何らかの理由で、サーバーはその存続期間中に1つの接続のみを受け入れます。最初の接続が閉じられた後でも、サーバーは何もしません。接続を拒否していないため、スレッドが生成されていないのではないかと疑っています。
サーバーへのコードは次のとおりです。http://docs.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServer.java
必要なものだけなので、この例を使用しました。このコードは変更しませんでした。それは私が実際に使ったスレッドです...
import java.net.*;
import java.io.*;
public class KKMultiServerThread extends Thread {
private Socket socket = null;
public KKMultiServerThread(Socket socket) {
super("KKMultiServerThread");
this.socket = socket;
}
public void run() {
try {
final PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine, outputLine;
out.println("connected");
boolean loggedin = false;
String username="";
String password="";
String deviceid="";
while (true) {
//deal with login handshake
if ((inputLine = in.readLine()) == null) inputLine="";
if (!loggedin) {
Logs the user in...
Also does things with files and keeps reading and writing to the client...
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
}
何がうまくいかない可能性がありますか?ソケットとすべてのストリームを必要に応じて閉じますが、それでも機能するはずです。
今後ともよろしくお願いいたします。