Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
Почему сервер не принимает ввод от клиента? В чем ошибка?
public class Client
{
public static void main(String[] args)
{
try(Socket client=new Socket("192.168.56.1",7000);
PrintWriter pw = new PrintWriter(client.getOutputStream(), true);
BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream())))
{
String Text;
System.out.println(reader.readLine());
Scanner sc=new Scanner(System.in);
Text = sc.nextLine();
pw.print(Text);
System.out.println(reader.readLine());
Text = sc.nextLine();
pw.print(Text);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
public class Server
{
public static void main(String[] args)
{
try(ServerSocket serverSocket=new ServerSocket(7000))
{
System.out.println("Start");
try (Socket server = serverSocket.accept();
BufferedReader reader=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter pw = new PrintWriter(server.getOutputStream(), true))
{
pw.println("Write text");
String terx = reader.readLine();
pw.println("Text "+terx);
String file;
file=reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Используйте pw.println() вместо pw.print()
Или
Добавляйте в конец строки System.lineSeparator(), после чего pw.flush();
Да, параметр autoFlush = true работает только с println()
тыць
Это dead lock - сервер ждет, когда клиент что-то напишет, а клиент занят тем же - у сокета операция чтения блокирующая, пока не придет сообщение/сокет не закроется, так и будет висеть в ожидании.
Продвижение своими сайтами как стратегия роста и независимости