Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 21:06   #1
NerfDoriftar
Пользователь
 
Регистрация: 17.01.2015
Сообщений: 15
По умолчанию Сокеты Delphi

Нужна ваша помощь.
Чтобы не было тупых вопросов от меня.
Обьяснение:
1.Клиент генерирует ключ.
2.Клиент подключается к серверу.
3.Сервер получает ключ и выводит в переменную.
Сама проблема: При заходе двух и более пользователей , ключ выводится не понятный , а иногда даже другому пользователю мой ключ.
И из-за этого сервер не может нормально проверить ключ и выдать данные клиенту.

Код:
   for i:= 0 to Form1.ServerSocket1.Socket.ActiveConnections-1  do
   begin
   Form1.ServerSocket1.Socket.Connections[i].SendText(G1+#13#10+G2+#13#10+G3+#13#10+G4+#13#10+G5+
        #13#10+G6+#13#10+G7+#13#10+G8+#13#10+G9+#13#10+G10+#13#10+G11+#13#10+G12+#13#10);
   end;
Если заходить только одному , тогда всё нормально.
Как только заходит второй , ему либо выдаётся мой ключ либо какой-то не понятный.
Как решить проблему?

Последний раз редактировалось Stilet; 22.01.2015 в 07:48.
NerfDoriftar вне форума Ответить с цитированием
Старый 22.01.2015, 02:05   #2
NerfDoriftar
Пользователь
 
Регистрация: 17.01.2015
Сообщений: 15
По умолчанию

Разве ни кто не знает как решить?
NerfDoriftar вне форума Ответить с цитированием
Старый 22.01.2015, 02:11   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от NerfDoriftar Посмотреть сообщение
Разве ни кто не знает как решить?
Что решить?
1. Твою задачу? Это знают и решали многие. Тебе нужен готовый код?
2. Твою конкретную проблему с кодом скопипастенным из неизвестно откуда, но явно не пригодным для данной задачи?
northener вне форума Ответить с цитированием
Старый 22.01.2015, 02:35   #4
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
ключ выводится не понятный
Видимо потому, что в переменных сидит непонятно что
Цитата:
Как решить проблему?
То есть ты на 100% уверен, что проблема в этой строчке кода??? Тогда отвечу. НИ КАК.
WinCoder вне форума Ответить с цитированием
Старый 22.01.2015, 02:48   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Ну тогда добавлю.
Цитата:
Как только заходит второй , ему либо выдаётся мой ключ либо какой-то не понятный.
А чего тут может быть ещё, если всем подключившимся клиентам раздаётся одно и то же "не взирая ни лица":
Код:
   for i:= 0 to Form1.ServerSocket1.Socket.ActiveConnections-1  do
   begin
   Form1.ServerSocket1.Socket.Connections[i].SendText(G1+#13#10+G2+#13#10+G3+#13#10+G4+#13#10+G5+#13#10+
               G6+#13#10+G7+#13#10+G8+#13#10+G9+#13#10+G10+#13#10+G11+#13#10+G12+#13#10);
   end;

Последний раз редактировалось Stilet; 22.01.2015 в 07:49.
northener вне форума Ответить с цитированием
Старый 22.01.2015, 02:57   #6
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Ну тогда и я телепатирую.
Код:
var 
  G: Array of String;
begin
  for i:= 0 to Form1.ServerSocket1.Socket.ActiveConnections-1  do
   begin
   Form1.ServerSocket1.Socket.Connections[i].SendText(G[I]);
   end;
WinCoder вне форума Ответить с цитированием
Старый 22.01.2015, 07:53   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ServerSocket1
Не рекомендую использовать этот компонент. Не потому что он плох, а потому что его использование требует больше знаний чем к примеру компоненты INDI.
Цитата:
ключ выводится не понятный
Может из-за отсутствия склейки пакетов? Это распространенная проблема этого компонента.
Цитата:
иногда даже другому пользователю мой ключ.
Код нужно смотреть. Этого для анализа мало.
Цитата:
Как решить проблему?
Использовать средства поновее. Тот же INDI. Или Synapse. Или вообще WinINET функции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2015, 10:03   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Новички должны использовать сокеты только в блокирующем режиме stThreadBlocking
И только когда станут гуру блокирующего режима переходить на асинхронный...
даже я иногда в асинхронке путаюсь, а в IOCP и подавно черт ногу сломит
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 22.01.2015 в 10:09.
Slym вне форума Ответить с цитированием
Старый 22.01.2015, 16:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты всетки подумай о полном переходе на INDI...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2015, 21:16   #10
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Indy для соккетов? Фу фу фу. Overbyte ICQ. Изначально работает в отдельном потоке, не нагружая главный, и не вешая его.
WinCoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-сервер (Сокеты) / Delphi unreal2x Помощь студентам 0 24.04.2012 17:50
сокеты - ошибка 10013 (delphi) dyonysos Работа с сетью в Delphi 5 10.03.2010 17:35
Сокеты в Delphi 2009 TzX Общие вопросы Delphi 11 09.02.2010 21:49
Сокеты в Delphi god110 Работа с сетью в Delphi 13 08.09.2009 11:20
Сокеты в Delphi Necro Работа с сетью в Delphi 11 24.04.2007 07:32