| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 для чата
Сам не проверял, но раньше были слухи, что в них есть ошибка. |
| Автор: The MASTER 20.1.2005, 20:13 |
| Я конечно WinApi хорошо не знаю, ну говорят через WinApi сложнее работать но за-то всё передаётся быстрее и качественней! |
| Автор: DeMoneZ 21.1.2005, 23:39 | ||
дак ты узнай у того кто такое говорит!!! |
| Автор: Akella 24.1.2005, 16:41 | ||
Скажем "медленее" чем 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 |
| Так мы уже пишем чат? |
| Автор: SoWa 17.2.2005, 18:57 |
| TCP для локалки- наилучший вариант, так как скорость самой локалки немалая! |
| Автор: _hunter 17.2.2005, 18:59 |
| SoWa, это ты к чему? |
| Автор: SoWa 17.2.2005, 19:12 | ||
Вот! |
| Автор: _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 | ||
В стандартном 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? P.S. Я наверное чуть запоздал с вопросом... |
| Автор: VICTAR 17.3.2007, 02:05 |
Буквально на два года |
| Автор: DYUMON 21.3.2007, 22:53 |
| Понимаешь TCP/IP сначала устанавливает соединение с конкретным ip затем отправляет туда случайно сгенерированное число которое в случай успешного соединение возратится к нему увеличенным на еденицу. и он подсчитывает пакеты. А UDP просто выплёвывает в сеть порцию пакетов для получателя и ему похрену дошли они не дошли. Поэтому если хочешь чтоб чат был надежным пишешь отдельный сервер а кнему цепляются клиенты. На крайняк в самой проге реализуешь сервер просто в насторйках указываешь как ей работать клиентом или сервером. а для udp пишешь широковещательный адрес xxx.xxx.xxx.255 и все клиенты в сетке получаю сообщения. хотя тот кто отправил может и два раза получить свою мессагу. |
| Автор: Dr_midon 18.4.2007, 13:00 |
| Вот исчо один опоздавший взял да написал чат на UDP. Это конечно заготовка(работающая на Delphi7) зато ее мона доделывать - возможно кому нибудь пригодится. Я сам пытаюсь сделать чат без общего сервака и чтоб он не тормозил ИМХО для этой цели как раз UDP подходит с брутфорсом xxx.xxx.xxx.255 |