Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 20:47   #1
BakX
 
Аватар для BakX
 
Регистрация: 11.09.2008
Сообщений: 4
По умолчанию Помогите доработать чат

Доброго всем времени суток.
Господа программисты помогите. Недавно начал разбирать работу с сетью в Delphi и решил написать свой чат. Все бы ничего, чат написан. Проблема в слеующем:
Я живу в общаге, следовтельно IP: 192.168.X.***(вмесо X - 4,5,6,7,8,9)
Мой чат отправляет сообщения видимые пользователям только одной маски, к примеру 192.168.6.255.


Помогите кто знает:
1) чтобы все пользователи читали общак, при этом чтобы небыло разделения на сервер и клиент;
2)отображались пользователи находящиеся в чате.


Вот моя прога:
Вложения
Тип файла: rar Чат.rar (6.3 Кб, 30 просмотров)
BakX вне форума Ответить с цитированием
Старый 30.09.2008, 21:09   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

http://programmersforum.ru/showthread.php?t=26880
в частности читайте RFC-1918
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 30.09.2008, 23:21   #3
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от BakX Посмотреть сообщение
Помогите кто знает:
1) чтобы все пользователи читали общак, при этом чтобы небыло разделения на сервер и клиент;
2)отображались пользователи находящиеся в чате.
используй широковещательные UDP пакеты
s.Creator вне форума Ответить с цитированием
Старый 01.10.2008, 09:09   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Сообщение от s.Creator Посмотреть сообщение
используй широковещательные UDP пакеты
если вы имеете ввиду просто UDP то это ничего не решает. Если вы имеете ввиду multicast, то далеко не везде он пройдет, и не факт что дойдет до адресата, хотя, безусловно, это решение
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 01.10.2008, 09:52   #5
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
если вы имеете ввиду просто UDP то это ничего не решает. Если вы имеете ввиду multicast, то далеко не везде он пройдет, и не факт что дойдет до адресата, хотя, безусловно, это решение
multicast (или broadcast), думаю для сети общежития вполне подойдет
можно конечно еще предпринять меры по поводу потери пакетов.
где то в инете встречал примеры внутресетевых чатов на UDP
s.Creator вне форума Ответить с цитированием
Старый 01.10.2008, 21:22   #6
BakX
 
Аватар для BakX
 
Регистрация: 11.09.2008
Сообщений: 4
По умолчанию

Квэнди
Я прочел эти статьи, но не совсем понял как мне они помогут решить проблему...

s.Creator
Я с сетью в Delphi только начинаю общаться, поэтому multicast и broadcast. Если я правильно понял то они рассылают сообщения на все Ip в сети по очереди, но разве тогда не будет ее засорения?

В данный момоент в моем чате общаются только 192.168.6.***
BakX вне форума Ответить с цитированием
Старый 02.10.2008, 12:35   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

значит вы плохо прочитали.
ответье на вопрос что есть 192.168.0.0 255.255.0.0 ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 04.10.2008, 20:33   #8
BakX
 
Аватар для BakX
 
Регистрация: 11.09.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
значит вы плохо прочитали.
ответье на вопрос что есть 192.168.0.0 255.255.0.0 ?
1 - IP; 2 - DNS; и какой вывод? Как мне через UDP использовать их.


Я пробовал перебором, но ничегл не выходит.


Цитата:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
a:string;
begin
If not(edit1.Text='') then begin
a:=edit1.Text;
IdUDPClient1.Send('<'+Edit2.Text+'> '+' : '+a);
//Edit1.Text:='';
end
else begin
showmessage('Напишите сообщение');
End;
end;

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);

var
StringFormatedStream:TStringStream; s: String;
begin
StringFormatedStream:= TStringStream.Create('');
StringFormatedStream.CopyFrom(AData , AData.Size);
Memo1.Lines.Add(ABinding.PeerIP+' '+StringFormatedStream.DataString);
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s [1], Length(s));
StringFormatedStream.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=4 to 9 do begin
IdUDPClient1.Active:=false;
IdUDPClient1.Host:='192.168.'+intto str(i)+'.255';
IdUDPClient1.Active:=true;
SpeedButton1Click(Sender);
end;
Edit1.Text:='';
end;

Можно конечно попробовать сначала пропинговать, затем отсылать сообщение в цикле на каждый найденный IP. Я считаю это не выгодно: неизвестно запущена ли прога на данном IP => засоряется сеть... Как быть тогда.
BakX вне форума Ответить с цитированием
Старый 06.10.2008, 19:30   #9
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

http://www.delphisources.ru/files/so...year/i_net.zip
s.Creator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать чат на Delphi Эльф Работа с сетью в Delphi 20 27.07.2009 20:54
Помогите Пожалуйста доработать тест!!! dimi_87 Помощь студентам 4 23.07.2008 02:07
Помогите доработать и понять проблему в Grid nimf БД в Delphi 1 30.08.2007 18:02
Помогите настроить Чат по Локалке HAMMAN Свободное общение 1 17.07.2007 20:29