Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > ЧАТ для локалки с нуля


Автор: DeMoneZ 15.1.2005, 01:40
Вот хочется создать свои собственый чат!!!
Существует много вопросов подобного рода, но там не так подробно рассматриваются вопросы как мне хотелос бы...
так вот начнем вопрос первый
я знаю что это будут клиентсокет и сервер сокет, UDP и TCP клиент и сервак
так вот объясните мне в чем их различие, какие есть недостатки и какеи есть преимущества у того или другого копонента!!!

Автор: _hunter 15.1.2005, 14:36
если имеется в виду недостатки/преимущества TCP vs UDP -- они просты TCP гарантирует доставку пакета, но работает медленно; UDP -- быстро работает, но доставку ( и сигнализацию о потере пакета ) не обеспечивает

Автор: DeMoneZ 15.1.2005, 23:33
за это спасибо, но хотелось бы еще узнать чем плохи такие компоненты как клиентсокет и серверсокет???
почему чаще всегда предпочтения отдают пакету ИНДИ (т.е. TCP и UDP )???

Автор: _hunter 16.1.2005, 00:23
а ничем они не плохи. это дело личных предпочтений + поновее они ( индивские )

Автор: <Spawn> 16.1.2005, 06:29
Разумеется, нужно использовать TCP для чатаsmile
Цитата
за это спасибо, но хотелось бы еще узнать чем плохи такие компоненты как клиентсокет и серверсокет???

Сам не проверял, но раньше были слухи, что в них есть ошибка.

Автор: The MASTER 20.1.2005, 20:13
Я конечно WinApi хорошо не знаю, ну говорят через WinApi сложнее работать но за-то всё передаётся быстрее и качественней!

Автор: DeMoneZ 21.1.2005, 23:39
Цитата(The @ 20.1.2005, 20:13)
говорят через WinApi


дак ты узнай у того кто такое говорит!!!

Автор: Akella 24.1.2005, 16:41
Цитата(_hunter @ 15.1.2005, 14:36)
TCP гарантирует доставку пакета, но работает медленно;

Скажем "медленее" чем UDP

Автор: _hunter 24.1.2005, 16:43
дык само-собой: другие протоколы в опросе не указанны.

Автор: Akella 24.1.2005, 16:52
я имел ввиду, что работает он(TCP/IP) достаточно быстро, тем более, что уже все больше 100мБ сетей, уже есть гигабитные адаптеры, встроенные в системные платы. Так что, разницу на ощутишь, т.к. это чат, и в основном будет передаваться только текст (т.е. мало информации).

Автор: _hunter 24.1.2005, 17:37
быстро, но медленнее чем UDP.
и ( это само-собой ) для чата скорость передачи -- не главный параметр

Автор: falcon39 25.1.2005, 10:42
Кто знает как в чате вставлять смайлики WebBrouzer не потходит так как у некоторых пользователей откльчены картинки. Есть конечно RICHVIEW но он платный.

Автор: Guest 5.2.2005, 00:43
falcon39
ты чат свой пишешь?

Автор: The MASTER 17.2.2005, 13:59
Так мы уже пишем чат? smile

Автор: SoWa 17.2.2005, 18:57
TCP для локалки- наилучший вариант, так как скорость самой локалки немалая! smile

Автор: _hunter 17.2.2005, 18:59
SoWa, это ты к чему?

Автор: SoWa 17.2.2005, 19:12
Цитата
Так мы уже пишем чат?

Вот! smile smile smile

Автор: _hunter 17.2.2005, 19:38
и как твое сообщение связано с процитированным?
+ ты сообщение dsergey читал? чем твое от его отличается?

Автор: sashas1 17.2.2005, 20:29
Как вставить картинку в RxRichEdit???

Автор: SoWa 18.2.2005, 13:36
sashas1! Тебе, наверно, надо создать новую тему!

Автор: RA 18.2.2005, 19:58
Вот гляньте Чат от Jey_k

http://forum.vingrad.ru/index.php?showtopic=28948&view=findpost&p=222041

Автор: sashas1 23.2.2005, 23:37
SoWa создал но на нее помойму никто не обращает внимания! помогите!

Автор: Akella 24.2.2005, 09:52
Я переделывал эту программу.
В итоге получился чат, да еще и с использованием MS Agent.

Автор: Тьма 24.2.2005, 18:36
Цитата
Как вставить картинку в RxRichEdit???


В стандартном RichEdit нельзя, для RichEdit с картинками используйте RichEdit из RxLib или JVCL.


Автор: Vit
www.delphist.com
www.drkb.ru
chicago.lastplanet.com


Взято с Vingrad.ru http://forum.vingrad.ru



--------------------------------------------------------------------------------

Ниже представлен пример, который можно применить к RxRichEdit, RichEditEx, RichEdit98, и Microsoft RichTextBox (поставляемый с VB5+) не прибегая к использованию буфера обмена или OLE:

function BitmapToRTF(pict: TBitmap): string;
var
bi,bb,rtf: string;
bis,bbs: Cardinal;
achar: ShortString;
hexpict: string;
I: Integer;
begin
GetDIBSizes(pict.Handle,bis,bbs);
SetLength(bi,bis);
SetLength(bb,bbs);
GetDIB(pict.Handle,pict.Palette,PChar(bi)^,PChar(bb)^);
rtf := '{\rtf1 {\pict\dibitmap ';
SetLength(hexpict,(Length(bb) + Length(bi)) * 2);
I := 2;
for bis := 1 to Length(bi) do
begin
achar := Format('%x',[Integer(bi[bis])]);
if Length(achar) = 1 then
achar := '0' + achar;
hexpict[I-1] := achar[1];
hexpict[I] := achar[2];
Inc(I,2);
end;
for bbs := 1 to Length(bb) do
begin
achar := Format('%x',[Integer(bb[bbs])]);
if Length(achar) = 1 then
achar := '0' + achar;
hexpict[I-1] := achar[1];
hexpict[I] := achar[2];
Inc(I,2);
end;
rtf := rtf + hexpict + ' }}';
Result := rtf;
end;

А вот пример использования этой функции:

{SS это TStringStream, RE это TRxRichEdit, а BMP это TBitmap содержащий картинку.}
SS := TStringStream.Create(BitmapToRTF(BMP));
RE.PlainText := False;
RE.StreamMode := [smSelection];
RE.Lines.LoadFromStream(SS);
SS.Free;

Взято из http://forum.sources.ru

Автор: Sportsmen 16.3.2007, 17:12
А как насчет того, что UDP легче программировать, чем TCP? smile 
P.S. Я наверное чуть запоздал с вопросом... smile 

Автор: VICTAR 17.3.2007, 02:05
Цитата(Sportsmen @  16.3.2007,  17:12 Найти цитируемый пост)
P.S. Я наверное чуть запоздал с вопросом... 

Буквально на два года  smile 

Автор: DYUMON 21.3.2007, 22:53
Понимаешь TCP/IP сначала устанавливает соединение с конкретным ip затем отправляет туда случайно сгенерированное число которое в случай успешного соединение возратится к нему увеличенным на еденицу. и он подсчитывает пакеты. А UDP просто выплёвывает в сеть порцию пакетов для получателя и ему похрену дошли они не дошли. smile 
Поэтому если хочешь чтоб чат был надежным пишешь отдельный сервер а кнему цепляются клиенты. На крайняк в самой проге реализуешь сервер просто в насторйках указываешь как ей работать клиентом или сервером.
а для udp пишешь широковещательный адрес xxx.xxx.xxx.255 и все клиенты в сетке получаю сообщения. хотя тот кто отправил может и два раза получить свою мессагу. 

Автор: Dr_midon 18.4.2007, 13:00
Вот исчо один опоздавший взял да написал чат на UDP.
Это конечно заготовка(работающая на Delphi7) зато ее мона доделывать - 
возможно кому нибудь пригодится.

Я сам пытаюсь сделать чат без общего сервака и чтоб он не тормозил
ИМХО для этой цели как раз UDP подходит с брутфорсом xxx.xxx.xxx.255

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)