クライアントソケットからサーバーにデータを送信しようとしていますが、データが送信されても、サーバーはまだデータを待機しています。その後、クライアントソケットはサーバーからのデータを待機しています。互いに待機している2つのソケットがあります。誰かが何が悪いのか説明できますか?
クライアント:
package ssd8ex3_tcp_client;
import java.io.*;
import java.net.*;
public class Ssd8Ex3_TCP_Client {
private static final int SERVICE_PORT = 2000;
public static void main(String[] args) {
String hostname = "localhost";
int counter = 0;
while (counter < 1000) {
try {
Socket socket = new Socket(hostname, SERVICE_PORT);
socket.setSoTimeout(50000);
PrintStream pstream = new PrintStream( socket.getOutputStream() );
pstream.print(counter);
pstream.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = reader.readLine();
System.out.println("Results :" + s);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
counter++;
}
}
}
サーバ:
package ssd8ex3_tcp_server;
import java.io.*;
import java.net.*;
public class Ssd8Ex3_TCP_Server {
public static final int SERVICE_PORT = 2000;
public static void main(String[] args) {
try {
ServerSocket server_socket = new ServerSocket(SERVICE_PORT);
System.out.println("Server started");
for(;;){
Socket nextClient = server_socket.accept();
System.out.println("Received request from " + nextClient.getInetAddress() + ":" + nextClient.getPort());
BufferedReader reader = new BufferedReader(new InputStreamReader(nextClient.getInputStream()));
String s = reader.readLine();
OutputStreamWriter out = new OutputStreamWriter(nextClient.getOutputStream());
PrintWriter pout = new PrintWriter(out);
pout.print(s);
out.flush();
nextClient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}