Посоветуйте стабильный компонент для клиент-серверной программы

Тема в разделе "Delphi - Сети", создана пользователем eXpressionist, 7 янв 2011.

  1. eXpressionist

    eXpressionist Гость

    Доброго времени, уважаемые!

    Пишу программу, от которой требуется быть очень надежным чатом. То есть передаются и принимаются лишь строчки с текстом, которые прога расшифровывает и выполняет команды.
    В данный момент работает на стандартных TClientSocket и TServerSocket в D7. Вся сетевая часть взята на основе статьи Многопользовательский чат Delphi, за небольшими изменениями.
    В сети сервер и 4 компа - один во внешке, два по VPN и один по локалке.
    Происходит такое, что порой то отваливаются клиенты, то - самое важное - не доходят сообщения до сервера даже по локалке, причем иногда из 6 сообщений приходит первое и последнее, а промежуточные теряются.

    Может эти сокеты глючные? Если менять, то главный критерий выбора компонента - быстрая портация существующей сетевой части..

    Собственно, прошу совета - либо какой компонент выбрать, либо как модернизировать существующую прогу, чтобы повысить стабильность.
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Это беда никак не компонентов, а самой программы. Это первое.

    Второе.
    Вместо устареших компонентов используйте компоненты от Indy 9

    Третье.
    Хотите полной уверенности - пишите всю работу сокетом руками, благо, не так и сложно.
     
  3. eXpressionist

    eXpressionist Гость

    Не исключаю, разумеется, и косяков программы. Изначально все работало более-менее стабильно, и вот последнее время после переделки сети пошли глюки.

    Согласно вышеуказанной статье, серверный таймер работает вот так:
    Код (Delphi):
    If ServerSocket.Socket.ActiveConnections<>0 then
    Begin
    For i:=1 to ServerSocket.Socket.ActiveConnections do
    Begin
    txt:=ServerSocket.Socket.Connections[i-1].ReceiveText();
    If txt<>'' then
    Begin
    com:=StrToInt(Copy(txt,1,1));
    len:=Length(txt)-1;
    Case com of
    и в кейсе в зависимости от первого символа выполняет некие условия.. пробовал таймер менять и на 200, и на 100 - не приносит пользы.

    Инди компонент попробую, нашел какой-то исходник, поглядим..

    Руками через Winsock API? Почитал статейку - мне пока такое не по зубам. По крайней мере, в короткие сроки, в которые необходимо пофиксить указанную софтину..
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Может конечно я не прав, но по-моему, та реализация чата по вашей статье - это полный п*здец.

    http://code.progler.ru/tags/Delphi,%D0%A7%D0%B0%D1%82 смотрели тут примеры?

    Мне дико не нравится таймер на сервере. Бред какой-то.
     
  5. eXpressionist

    eXpressionist Гость

    vital
    вы правы) просто это было лучшее из доступного.

    за ссылочку спасибо, оценю.

    таймер на сервере мне уже ТОЖЕ не нравится, с появлением жалоб, растущих по экспоненте.
     
  6. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    я хоть убейте не понимаю зачем. просто на onclientread рассылайте всем клиентам сообщения. Если делать это не на онклиентрид, а по таймеру, то вы как минимум будете терять сообщения. Жалобы вроде бы в этом, да?)
     
  7. eXpressionist

    eXpressionist Гость

    vital
    если не ошибаюсь, OnRead и OnWrite работают только при ThreadBlocking типе сервера, а у меня NonBlocking.
    хотя, ошибаюсь. попробую перенести.

    изменил.. поглядим, как прибавит стабильности.

    p.s. спасибо за совет, думаю что все-таки будет лучше. а то уже пару месяцев с прогой сношаюсь, но на такой момент, как ненужность таймера, внимания не обращал.
     
  8. eXpressionist

    eXpressionist Гость

    И все-таки не помогло, сегодня опять жаловались и жаловались.. И опять по локалке пропадает..
    Попробую сделать три сокета - один на список контактов, другой на чат, третий на служебные цели
     
  9. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    а пропадают точно из-за программы? мб блочит что-то в сети? поэксперементируйте. найдите закономерность когда пропадают. Рандомно не может быть.
     
  10. mss

    mss Гость

    > серверный таймер работает

    За каким лешим он там сдался, таймер этот ?

    События OnClientRead/Write для Пушкина сделаны ?
     
  11. eXpressionist

    eXpressionist Гость

    mss
    уже перенес. а OnClientWrite вообще не нужен, по крайней мере в моем случае.

    vital
    что может блочить мне трудно сказать. сервер стоит на Kerio (порты расшарены). и главное, что в течение дня, без каких-либо смен настроек, могут мессаги пропадать.
     
Загрузка...
Похожие Темы - Посоветуйте стабильный компонент
  1. KhNarg
    Ответов:
    5
    Просмотров:
    893
  2. IllusionYes
    Ответов:
    0
    Просмотров:
    987
  3. megobite
    Ответов:
    3
    Просмотров:
    1.492
  4. Shandrik
    Ответов:
    0
    Просмотров:
    1.357
  5. RadoXX
    Ответов:
    2
    Просмотров:
    1.437

Поделиться этой страницей