に確認応答を返送されていません。私は私のソケットを作成した後、クライアント側ではServerは、私がこちらに以下の私のサーバーのコードを持っているクライアント
public void makeConnection() {
try {
Socket socket = new Socket(IP, PORT);
Writer writer = new PrintWriter(socket.getOutputStream(), true);
writer.write("connection\n");
BufferedReader socketRead = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
while ((str = socketRead.readLine()) != null) {
if ("success".equals(str)) {
System.out.println("Successfully saved all hosts to: " + listOfHosts.get(i));
socketRead.close();
socket.close();
iStream.close();
writer.close();
}
}
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
:
public void startServer() {
ServerSocket listener = selectUnusedPortFromRange(1024, 65535);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
String command = null;
while (true) {
Socket socket = listener.accept();
System.out.println("Got a connection from: " + socket.getLocalPort());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
command = in.readLine();
System.out.println("GOT HERE"); //Not being printed out
if (command != null && !"".equals(command)) {
if ("connection".equals(command)) {
Writer writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("success\n");
writer.flush();
}
}
}
}
}
}
t.start();
}
これは私のクライアント側でサーバへの接続には、ソケットのoutputStream
に「接続」を書き込んで、成功を示すサーバからの応答を返すのを待ちます。なんらかの理由で、サーバーとの接続が確立されていません。サーバではSystem.out.println("Got a connection from: " + socket.getLocalPort());
この行は印刷されません。
私は何か間違っていますか?私はそれを見つけることができません。私は自分のサーバーに接続しようとすると例外がスローされない。
だけの健全性チェック...サーバーがバインドされているのと同じポートを使用しているクライアントですか?私は 'selectUnusedPortFromRange()'が何をするのかは分からないが、私の推測では、指定された範囲内の使用されていないランダムなポートにバインドされているのだろうか?クライアントがどのポートにバインドされているかを確認してください。 – SnakeDoc
@cricketはい私はそれに気付き、それを変更しました。それは私のタイプミスでした。私は今私のポストで正しいコードに変更しました。 – CapturedTree
これは見ましたか? https://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html –