このコードの断片では、クライアントはサーバーにStringを送信します。 サーバーはそれを元に戻し、クライアントに再送信します。 BUT、クライアントは文字列を受信しませんでした。 または、サーバーが逆の文字列を受け取っていない可能性があります。java内のTCPソケット
Serverコード:
public class Serveur {
public static void main(String[] args) {
ServerSocket sock = null;
Socket link = null;
BufferedReader input = null;
PrintWriter output = null;
try {
sock = new ServerSocket(1234);
link = sock.accept();
input = new BufferedReader(new InputStreamReader(link.getInputStream()));
output = new PrintWriter(link.getOutputStream());
String str, rstr;
while(true){
System.out.println("entered while loop");
str = input.readLine();
System.out.println("we received : " + str);
rstr="";
for (int i = 0; i < str.length(); i++)
rstr = str.charAt(i) + rstr;
System.out.println("we will send to the client : " + rstr);
output.print(rstr);
System.out.println("sent");
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
クライアントコード:
public class Client {
public static void main(String[] args) {
Socket sock = null;
PrintWriter output = null;
BufferedReader input = null;
try {
sock = new Socket(InetAddress.getLocalHost(), 1234);
output = new PrintWriter(sock.getOutputStream());
input = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String str;
Scanner s = new Scanner(System.in);
while(true){
System.out.println("Ecrire une chaine de caractere : ");
str = s.nextLine();
System.out.println("i want to reverse : " + str);
output.println(str);
System.out.println("ch is sent");
String rr = input.readLine();
System.out.print(rr);
System.out.println("reversed word is received");
}
} catch (UnknownHostException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
サーバー出力:
entered while loop
クライアントの出力:
Ecrire une chaine de caractere :
teste
i want to reverse : teste
ch is sent
それとも、私達にあなたのクライアントとサーバの出力を与えていませんか? – Adonis
サーバ上で診断を使用することで、少なくとも*どのような場合でも対処できるはずです。 –
それぞれにブレークポイントを設定し、コードをステップ実行するとどうなりますか? – efekctive