Boa tarde, fiz um exercício em java que funciona, mais ou menos. Menos um requisito funcional, que creio ser por algum erro bobo.
Client side:
ClienteTCP.java
package com.example.clientetcp;
import java.io.*;
import java.net.*;
public class ClienteTCP {
public static void main(String args[]) throws Exception {
Socket s = new Socket("localhost", 4567);
BufferedReader doUsuario =
new BufferedReader(new InputStreamReader(System.in));
BufferedReader doServidor =
new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter escrever = new PrintWriter(s.getOutputStream(), true);
System.out.println("Diga um numero ae: ");
String palpite = doUsuario.readLine();
escrever.println(palpite);
System.out.println(doServidor.readLine());
}
}
Server side:
ServidorTCP.java
package com.example.servidortcp;
import java.io.*;
import java.net.*;
public class ServidorTCP extends Thread {
public static void main(String[] args) throws IOException {
int porta = 4567;
ServerSocket listening = new ServerSocket(porta);
while(true) {
Socket conn = listening.accept();
MSGResponse msgr = new MSGResponse(conn);
Thread t = new Thread(msgr);
t.start();
}
}
}
import java.io.*;
import java.net.Socket;
import java.util.Random;
import java.util.Scanner;
public class MSGResponse implements Runnable {
private Socket conn;
private int t;
public MSGResponse(Socket conn) {
this.conn = conn;
}
public void run() {
String resposta;
int num = new Random().nextInt(9);
try {
for(t = 7; t >= 1; t--) {
Scanner palpite = new Scanner(this.conn.getInputStream());
int guess = Integer.parseInt(palpite.nextLine());
if(guess == 0)
resposta = "tchau, nego";
if(guess == num)
resposta = "acertou, mideravi! | Tentativas = " + t;
else if(guess > num)
resposta = "pegue leve, foi muito :( | Tentativas = " + t;
else
resposta = "foi pouco =/ | Tentativas = " + t;
PrintWriter responder =
new PrintWriter(this.conn.getOutputStream(), true);
responder.println(resposta);
}
conn.close();
} catch(IOException e) {
System.out.println(e);
}
}
}
Com private int t;
e for(t = 7; t >= 1; t--) {
eu pretendia usar o contador t como número de tentativas. Como:
for(t = 7; t >= 1; t--) {
faz algo;
}
Mas o servidor fecha o socket
a cada loop
, o que fiz de tão errado? Ele deveria fechar após 6 palpites.