Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Arkaniy
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
1

Чат на сокетах

24.05.2013, 15:42. Просмотров 1116. Ответов 6
Метки нет (Все метки)

Здравствуйте, форумчане. Сейчас занялся написанием чата на сокетах. Всё вроде бы хорошо, но уперся в 1 проблему. Когда один клиент отключается, то все номера подключения сдвигаются на 1. Нашел решение методом перезаписи массива полностью. Тоесть посылать на каждый канал сообщение и получать от них ответы с никами. Но это не практично, как мне кажется. Уверен, что можно обойтись без этого. Читал про присваивание каждому пользователю идентификаторов, но так и не понял как их использовать при сдвиге каналов. Прошу помощи у знающих людей.

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

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 15:42
Ответы с готовыми решениями:

Чат на сокетах
Здрасьте. Знаю, что тема до невозможности бородатая, но возникла необходимость создания программы...

Чат на сокетах (Нюанс)
Здраствуйте. Сделал клиент,сервер на сокетах, на одном компе они работают- это понятно IP один и...

Сделать чат на сокетах
дал клиент другу(у меня сервер), мы используем одинаковый интернет от 1 провайдера. Программа не...

Переадресация на сокетах
Добрый день уважаемые программисты. Суть дела такова: Есть клиент и сервер. Сервер ожидает...

Соединение на сокетах
можно ли на сокетах созадть программу которая будет соединяться по интернету с другой своей копией?...

6
саша40
-109 / 295 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.05.2013, 16:21 2
А просто проверять соеденение с всеми нельзя?
0
mss
2639 / 2263 / 277
Регистрация: 24.12.2010
Сообщений: 13,725
24.05.2013, 17:53 3
В случае со вспомогательным массивом можно поступить, к примеру, так:

Код
type
  TUserConnectionInfo = packed record
    UniqueUserNikName: String; // уникальный ник зарегистрированного усера
    AssotiatedSocketConnectionHandle: THandle; // ассоциированный с усером хендл сокета
  end;

var
  ActiveChannels: array of TUserConnectionInfo;
1
Arkaniy
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
24.05.2013, 19:06  [ТС] 4
саша40, так я же хочу избежать этого. После отключения одного я могу переписать массив, но не хотелось бы так поступать.

mss, C хендлами сокетов не знаком. Я так понял, что можно определить хендл удаленного сокета и уже туда послать нужное сообщение. Я правильно мыслю?
0
саша40
-109 / 295 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.05.2013, 21:15 5
Цитата Сообщение от Arkaniy Посмотреть сообщение
саша40, так я же хочу избежать этого. После отключения одного я могу переписать массив, но не хотелось бы так поступать.
А зачем ты массив взял, возьми лучше список. Хоть даже неведимый листбокс. Функцией Connected проверяй.
0
mss
2639 / 2263 / 277
Регистрация: 24.12.2010
Сообщений: 13,725
24.05.2013, 21:17 6
Цитата Сообщение от Arkaniy Посмотреть сообщение
Я правильно мыслю?
Неправильно.
Хендл тебе с момента соединения клиента с твоим сервером ВСЕГДА известен, определять его нет никакой необходимости.

Цитата Сообщение от Arkaniy Посмотреть сообщение
саша40, так я же хочу избежать этого
Этот бредоносец тебе еще и н не такое насоветует)
0
Arkaniy
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
24.05.2013, 22:44  [ТС] 7
mss, тем не менее я таки сделал, что хотел
Спасибо большое!

Добавлено через 1 минуту
саша40, Массивом цивильней как-то нежели невидимый бокс. Да и в массив записаны уже и имя, и хендл, и статус онлайн.

Добавлено через 1 час 23 минуты
Еще вопрос 1 возник. По поводу передачи списка пользователей. Думаю передать список целиком через буфер. Есть-ли такая возможность? Есть вариант передавать список строкой с именами и статусами каждый раз после его изменения. Но хотелось бы без этого. Если это можно, конечно же .
0
24.05.2013, 22:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 22:44

Регистрация/авторизация на сокетах
Как с помощью компонентов TServerSocket и TClientSocket организовать регистрацию и авторизацию...

Чат на сокетах
Я создаю чат на С ++, только такой в котором 1 сервер который как и клиент также может отправлять и...

Чат на сокетах
Здравствуйте, хочу сделать чат на PHP с использованием сокетов. С самими сокетами я познакомился,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru