Notebook: http://pastebin.com/hNgjr4QY, код сервера: http://pastebin.com/J5hnz2muПочему ввод из нескольких сокетов не обновляет пользовательский интерфейс правильно? Код
Я в основном interesested в блокнот части кода:
private class ClientHandler implements Runnable
{
public void run()
{
String message = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((message = bufferedReader.readLine()) != null)
{
if (!message.equals(""))
{
textArea.setText(message);
textArea.setCaretPosition(textArea.getDocument().getLength());
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
и
public void run()
{
String message = null;
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((message = bufferedReader.readLine()) != null)
{
for (ComputerConnections ccc: comCon)
{
ccc.printWriter.println(message);
ccc.printWriter.flush();
}
}
bufferedReader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
хорошо, пункт программы, чтобы позволить так как многие пользователи подключаются, и после того, как они все могут писать в ОДНОМ блокноте, и программа должна обновить его соответствующим образом, ну и кажется, что он ведет себя странно. Сначала он прекрасно обновляется, но затем он просто внезапно останавливается и работает каждые несколько ключевых нажатий!
Вам придется перепроектировать сервер. Если одно соединение получает строку, оно в настоящее время отправляет ее всем подключенным клиентам. Нет ничего, чтобы избежать переключения потока на другое соединение, которое будет читать строку и отправлять ее всем подключенным клиентам. Результат: искаженная и различная последовательность текста для клиентов. – laune
Я не совсем понимаю, я все еще новичок в Java и хватаюсь за воздух ... Как я вижу, клиент должен отправлять серверу, а затем сервер всем доступным клиентам. Но да, это все путается ... Что вы имеете в виду: «Нет ничего, чтобы избежать переключения потока на другое соединение, которое будет читать строку и отправлять ее всем подключенным клиентам». – pigi