Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6

Потеря соединения TClient Socket - TServer Socket

18.04.2017, 09:28. Показов 3416. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После коннекта клиента к серверу минут 20 соединение живёт и клиенты получают сообщения через длительное время они перестают получать сообщения и люди начинают жаловаться что им не пришло оповещение и после потери их коннета не помогает даже таймер с проверкой
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.tmr5Timer(Sender: TObject);
begin
If ClientSocket2.Active=False Then
Begin
ClientSocket2.Active:=True;
tmr5.Enabled:=False;
end;
end;
, причём проблема не у всех а лишь у некоторых людей в чём может быть проблема ?

Добавлено через 7 минут
все события disconnect и Error обработанны но походу они не срабатывают
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.ClientSocket2Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ClientSocket2.Active:= False;
tmr5.Enabled:=True;
if ErrorEvent= eeConnect  then
ClientSocket2.Active:= False;
shp1.Brush.Color := clRed;
tmr5.Enabled:=True;
ErrorCode:=0;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2017, 09:28
Ответы с готовыми решениями:

TClient + TServer + отправление и получение record различной длины
Доброго времени суток. Дано: сервер, клиент, тср. Необходимо: обеспечить передачу типа record различной длины, т.е....

Ошибка: Socket Error #11001 или socket error #10051
Делаю простую проверку подключен к нету комп или нет procedure TForm1.Button1Click(Sender: TObject); var Connected: Boolean; ...

Есть ли компоненты TClient TServer Socket в RAD Studio XE2
Я что то не могу найти компоненты TClientSocket, TServerSocket в Rad Studio XE2 попытался создать их динамически, но без результатно,...

10
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
18.04.2017, 09:53
Лог ведете? Имел ли вообще место обрыв соединения? Возможно проблема в коде вывода оповещений или в кривых пользователях?
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6
18.04.2017, 10:20  [ТС]
Получаю сообщение на клиенте во так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.ClientSocket2Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
b: string;
g: string;
begin
b := ClientSocket2.Socket.ReceiveText;
 msg(Get(b,'Text1')
,Get(b,'Text2')
,Get(b,'Text3')
,Get(b,'Text4'));
end;
а после уже в процедуре msg добавляю каждый текст в нужный столбик в List view врятле что проблема сдесь , а что ещё может иметь место кроме разрыва соединения ? может потеря данных? да лог есть но в целом простых дисконектов нету , но замечал что после отправки сообщения с сервера те клиенты которые уже застыли сразу отлетают от соединения.

Добавлено через 7 минут
да и вообще при выводе звук стоит который должен так и так срабатывать, до них скорее просто сообщение не доходит
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
18.04.2017, 10:22
Цитата Сообщение от OneEneRGY Посмотреть сообщение
замечал что после отправки сообщения с сервера те клиенты которые уже застыли сразу отлетают от соединения
А ErrorEvent/ErrorCode клиента что в это время передают?
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6
18.04.2017, 11:05  [ТС]
А у меня там просто ErrorCode =: 0; (( может сделать обновление с логом в мемо ошибом чтобы они мне сказали коды которые возникают чтобы я уже вам показал
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
18.04.2017, 12:04
Цитата Сообщение от OneEneRGY Посмотреть сообщение
А у меня там просто ErrorCode =: 0;
Ну вы же в конце обработчика сами его обнуляете, перед обнулением фиксировать надо и разбираться с тем кодом ошибки, что он возвращает.
Цитата Сообщение от OneEneRGY Посмотреть сообщение
чтобы они мне сказали коды которые возникают
Смысл пользователей привлекать, когда это самому пофиксить можно?
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6
18.04.2017, 17:33  [ТС]
Потому что у меня и большинстава всё ювелирно работает но некоторые с проблемами
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
19.04.2017, 01:16
Ну в таком случае есть два варианта дальнейшего пути.
Либо вы пользователей с проблемой посылаете "лесом на север", либо таки пишете подробный лог с указанием кода ошибки и высылаете его себе. Либо автоматом, либо по запросу к пользователю.
Для создания подробного лога есть готовые решения. И платные и бесплатные.

P.S. Ничем другим я вам помочь не могу. Впрочем не только я, но и вообще никто.
0
0 / 0 / 0
Регистрация: 04.10.2015
Сообщений: 18
19.04.2017, 20:17
Товарищь, во первых у данных компонентов есть события OnError, OnDisconnect, которые надо правильно обрабатывать.
Во вторых отправку сообщения необходимо заключать в try..except для отсеивания исключений.
В третьих, вы же приклеили таймер. отправляйте каждые надцать секунд 1 байт(можно хоть символ, хоть кирпич, главное отправить) серверу, проверяя соединение на доступность.
В четвертых, в каждом действии сокета тыкайте запись лога в файл с указанием даты и времени. При массовом дисконнекте собираем логи у юзеров и смотрим, где "вылезло".
В пятых, при отправке сообщения с сервера желательно бы получать отклик от клиента...

И да, конструкция if..then..else вообще то пишется через begin..end.
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6
22.04.2017, 10:38  [ТС]
Я сам знаю что и как пишется , меня интересует лишь таймаут подключения через сколько клиент засыхает...
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 6
23.04.2017, 22:34  [ТС]
С каким интервалов делать отправку?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2017, 22:34
Помогаю со студенческими работами здесь

Невозможно создать Socket: Socket sock = new Socket(someHostString,somePortInt);
Народ! Помогите пожалуйста. Вся красота губится на exception что выскакивает в момент создания сокета: Socket sock = new...

Socket: потеря пакетов
Всем доброго дня. Следующая ситуация: Я работаю с сокетом асинхронными операциями и пакеты время от времени (не систематически) теряются....

Разрыв соединения и socket
В проекте использую клиент VNC с открытым исходным кодом TightVNC, в нем для обмена по сети используются сокеты TCP. Пытаюсь заставить...

Проверка Socket на наличие соединения
Помогите сделать проверку сокета перед подключением. public void onClick(View view) { if (socket.isClosed()) { socket = new...

Посоветуйте i5-7600 (Socket 1151) или i7-6800 (Socket 2011-3)
Посоветуйте, что взять i7-7700 (Socket 1151) или i7-6800 (Socket 2011-3) материнки на Z270 и на X99 (соответственно) Чем я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru