こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

TCP関係のjavaプログラム

TCPでオウム返しをするサーバとクライアントソフトでクライアント側でピリオドだけを入力すると接続を切るプログラムを作っているのですがなかなか思い通りにいきません。
正しいソースコードを教えてください。

クライアント側のソースコード
import java.io.*;
import java.net.*;
 
public class echoClient {
public static void main(String[] args) {
Socket echoSocket = null;
DataOutputStream os = null;
BufferedReader is = null;
 
try {
echoSocket = new Socket("localhost", 9999);
os = new DataOutputStream(echoSocket.getOutputStream());
is = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: localhost");
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: localhost");
}
 
if (echoSocket != null && os != null && is != null) {
try {
os.writeBytes("HELLO\n");
 
String responseLine;
if ((responseLine = is.readLine()) != null) {
System.out.println("Server: " + responseLine);
}
 
os.close();
is.close();
echoSocket.close();
} catch (UnknownHostException e) {
System.err.println("Trying to connect to unknown host: " + e);
} catch (IOException e) {
System.err.println("IOException: " + e);
}
}
}
}

サーバー側のプログラム
import java.io.*;
import java.net.*;

public class echoServer {
public static void main(String args[]) {
ServerSocket echoServer = null;
String line;
BufferedReader is;
PrintStream os;
Socket clientSocket = null;

try {
echoServer = new ServerSocket(9999);
}
catch (IOException e) {
System.out.println(e);
}

try {
clientSocket = echoServer.accept();
is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
os = new PrintStream(clientSocket.getOutputStream());

while (true) {
line = is.readLine();
os.println(line);
}
}
catch (IOException e) {
System.out.println(e);
}
}

投稿日時 - 2013-10-13 01:44:42

QNo.8303342

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

「クライアント側でピリオドだけを入力すると接続を切る」ということは、ピリオド以外の内容が入力されたらその内容をクライアントからサーバへ送って、サーバからオウム返しすることを繰り返したい、という理解で合っていますか?

そうだとすると、今のクライアントプログラムには下記のものが足りません。
(1)入力を行う部分
(2)入力された内容がピリオドだけかそうでないかを判断する部分
(3)"HELLO¥n"という固定文字列の代わりに入力された内容をサーバに送る部分
(4)入力・判断・サーバへのデータ送信・サーバからのデータ受信・サーバから受け取ったデータの出力を繰り返す部分

どの部分が分からないのかを補足してください。

投稿日時 - 2013-10-13 20:16:45

補足

他の人に聞くのでもう結構です。ありがとうございました

投稿日時 - 2013-10-13 22:05:24

あなたにオススメの質問