小さなプログラムを作成しようとしています。サーバーを開き、このサーバーに接続してそこからメッセージを受信するクライアントを作成します。ServerとServerSocketが1つのアプリケーションで動作していません。
これは私がプログラムを実行する場合は、()のreadLineで待ち続ける、これまで
public static void main(String[] args) {
final ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(12345);
Thread t = new Thread(){
public void run(){
try {
Socket server = serverSocket.accept();
PrintWriter writer = new PrintWriter(server.getOutputStream(), true);
writer.write("Hello World");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
};
t.start();
Socket client = new Socket("localhost", 12345);
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
String message = reader.readLine();
System.out.println("Received " + message);
} catch (IOException e1) {
e1.printStackTrace();
}
}
コードである - そう、明らかにクライアントがサーバからメッセージを受信しません。 誰かがこれがなぜうまくいかないのか考えていますか?
ベター:変更 'writer.write( "Hello Worldの");' 'writer.println(" Hello World ");' –
@RyanStewart:おそらく。個人的には、コードをプラットフォームのデフォルトにあまり依存しないようにすることを好みます。ネットワークプロトコルに関しては、サーバがWindowsを実行しているのか、Unixがあるのかは関係ありません。 –
私はあなたの選択がMac上でうまくいかないと思うが、真実だ。生産上の価値が懸念される場合、答えは、正確な理由から 'reader.readLine()'を使わないことです。しかし、この例は全く違った方向性を持っています。 –