Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2007-12-18 11:07:24 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:10
карма: 0

0
Ответов: 2125
Рейтинг: 159
#2: 2007-12-18 11:23:42 ЛС | профиль | цитата
HELP писал(а):
Личный чат уже готов

Ну и где он?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2007-12-18 11:24:44 ЛС | профиль | цитата
При получение сообщения сервером оно должно отсылаться на все клиенты, подключенные к нему, кроме источника сообщения. Ничего вроде сложного.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2007-12-18 11:36:02 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:10
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2007-12-18 11:58:12 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:10
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2007-12-18 12:15:03 ЛС | профиль | цитата
HELP,
1) приложения подобного рода всегда выполняются ввиде двух компонент - сервера и клиента. Сервер запускается отдельной программой и все остальные к нему подсоединяются.
2) для реализации выборочной отправки по ИП клиента элемент TCP_Server не применим. Нужно делать чат на основе TCP_ServerEx.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2007-12-18 12:21:43 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:11
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#8: 2007-12-18 12:23:46 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:11
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2007-12-18 12:25:46 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:11
карма: 0

0
Ответов: 2125
Рейтинг: 159
#10: 2007-12-18 13:20:46 ЛС | профиль | цитата
Зачем-же тогда в клиентской программе TCP_Server?
TCP_Server должен быть на сервере, а TCP_Client - у клиента.
Клиент указывает адрес сервера, к нему и коннектится.
А сообщения идут в обоих направлениях по одному соединению.

Если у тебя сервер на основе TCP_Server, сообщения ты можешь фильтровать в клиенте (т.е. если не мне, то не показывать). Кому предназначено сообщение (а также от кого, а ещё можно сделать служебные команды) посылать естесственно вместе с сообщением.

Например посылать строки в таком формате:

кому/от_кого/строка сообщения
кому/от_кого/строка сообщения
кому/от_кого/строка сообщения

------------ Дoбавленo:

Dilma, а ты не находишь, что в TCP_Server есть глюк? doSend делает для каждого соединения ReadXXX, а в итоге данные посылаются лишь тому, кто подключился первым.
Это можно, конечно, побороть так:

Add(MainForm,1173078,63,105)
{
Left=20
Top=105
link(onCreate,7958982:doOpen,[])
}
Add(TCP_Server,7958982,140,140)
{
Port=12345
link(onRead,9001928:doValue,[])
link(Data,9001928:Value,[(146,125)(186,125)(186,184)(209,184)])
}
Add(Memory,9001928,203,140)
{
link(onData,7958982:doSend,[(248,146)(248,113)(115,113)(115,160)])
}

Но так ли было задумано?

карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2007-12-18 13:28:26 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:11
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#12: 2007-12-18 13:37:11 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:01:11
карма: 0

0
Ответов: 2125
Рейтинг: 159
#13: 2007-12-18 13:40:32 ЛС | профиль | цитата
Я не выкладываю не проверенных схем. Я запускал мою вышеуказанную схему, открывал несколько копий Telnet, подключался к серверу и то, что я писал в одном из окон Telnet, отображалось везде.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2007-12-18 13:53:12 ЛС | профиль | цитата
да это ошибка. Добавлено.

HELP писал(а):
Нет, всё равно сообщения видит только 1 подключившийся!

не вижу в схеме использование точки doSend у сервера
карма: 27
0
Ответов: 2125
Рейтинг: 159
#15: 2007-12-18 14:00:19 ЛС | профиль | цитата
Dilma писал(а):
Добавлено.

Ну вот теперь выглядит гораздо красивше
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)