シンプルなサーバークライアントプログラムを作成しようとしていますが、問題があります。 クライアントからサーバーにデータを送信できますが、サーバーからデータを送信できません。それでは、どのサーバーからデータを送信し、クライアントでそれをreciveする
:()クライアントでそれをreciveJavaソケットに関する質問
サーバー:?
//this is in a thread
try {
server = new ServerSocket(1365);
} catch (IOException e) {
e.printStackTrace();
}
while (!exit) {
try {
clientSocket = server.accept();
is = new DataInputStream(clientSocket.getInputStream());
os = new PrintStream(clientSocket.getOutputStream());
while ((line = is.readLine()) != null) {
System.out.println("Message from client: " + line);
//if (line.equals("exit")) {
// exit = true;
//}
if (line.equals("say something")) {
os.write("something".getBytes());
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
} catch (IOException ex) {
ex.printStackTrace();
}
os.close();
}
はクライアント:
try {
socket = new Socket(host, 1365);
os = new DataOutputStream(socket.getOutputStream());
is = new DataInputStream(socket.getInputStream());
} catch (UnknownHostException e) {}
if (socket != null && os != null && is != null) {
try {
os.writeBytes("say something");
//get the answer from server
os.close();
is.close();
socket.close();
} catch (IOException e) {}
}
(長いコードは申し訳ありません)
ありがとうございます。
バッファリングされた文字ストリームの代わりにDataInputStreamとDataOutputStreamを使用する特定の理由はありますか? – Vasil
は、「何か」が受信されたときにだけサーバが応答するようです。なぜそれが全く応答していないのかもしれません。また、サーバーの出力ストリームがPrintStreamであるのはなぜですか? –
@ MasterPeter:クライアントは「何か」を送信するようにハードコードされているので、これはJaniがソケットをテストするために使用しているコードを投げ捨てただけだと思います。 –