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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2012, 15:04   #1
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
Радость Работа с сокетами

Здравствуйте, нужна помощь )
Пишу на сокетах "клиент/сервер". Сделал, миничатик, передачу файлов.
Вообще собираюсь сделать программку, для тимов, гильдий и т.д
Т.е на Counter-Strike , я уже дописываю античит. Для ММОРПГ. Как-то сами придумают.
Вообще, в чем вопрос, "авторизация". Видел в гугле, много просьб помоч. Читал те литературы , которые довали на вашем же форуме, так и не понял.
Я составил маленький кусок, который я лепил не долго, но всё же..
здесь , подключаемся к серверу, и показывается доп. форма 2
Код:
if not Form2.ShowModal <> mrOk then
ClientSocket1.Address:=Form2.edIP.Text;
ClientSocket1.Port:=StrToInt(Form2.edPort.Text);
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText('_l'+Form2.login.Text);
sleep(1000);
ClientSocket1.Socket.SendText('_p'+Form2.password.Text)
else
ShowMessage('Что-то не так. Попробуйте снова.');       
end;
так же, логин и пароль, для отличия добавляю префикс.
Теперь сервер :
Код:


procedure TfUsers.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
delm :string;
delmp : string;
begin
if  ( Edit2.Text<>'' ) and
                  ( Edit2.Text[1]= '_' ) and
                    ( Edit2.Text[2]= 'p' ) then
                    begin
                    Edit3.Clear;
                    Edit3.Text:=Edit2.Text;
                    delmp:=Edit2.Text;
                    delete(delmp,1,2);
                    end;
If ( Edit2.Text<>'' ) and
      (Edit2.Text[1] = '_') and
        (Edit2.Text[2] = 'l') then
         begin
           Edit3.Text:=Edit2.Text;
         if (Edit3.Text<>'') and
         ( Edit3.Text[1] = '_' ) and
           ( Edit3.Text[2] = 'l' ) then
              delm:=Edit3.Text;
                Delete(delm,1,2);
            

            Edit3.Clear;
            delm:='';
           end;
end;
код мой не ругать, все работает хорошо. Просто подскажите откуда вытаскивать , как сверять.
Тут, я отделяю префиксы от логинов и паролей. А вот где хранить и как сверять я не знаю...
P.s я знаю ваши реакции...
1) "пффффф... иди гугли по лучше "
1.1) Гуглил.
2) "в чем у тебя проблемма?"
2.2) Я выше написал.
3) "Иди литературу читай"
3.3) Где взять, что именно читать?
4) "афтор боян"
4.4) okay

Последний раз редактировалось Thief_Brother; 26.02.2012 в 15:07.
Thief_Brother вне форума Ответить с цитированием
Старый 26.02.2012, 15:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нельзя посылать данные до того как будете уверены что соединились.
а это событие сокета OnConnect если память не изменяет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.02.2012, 16:14   #3
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
По умолчанию

не. это я уже эксперементировал. Он т.е присоеденяется, отсылает "инфу" , сервер, обрабатывает и дает ответа типа , если все подошло - отсылаем 1 байт. или же нет. то отключаемся , либо выводим ошбику.
Thief_Brother вне форума Ответить с цитированием
Старый 26.02.2012, 16:36   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в вашем коде нет гарантии того что вы будете отправлять в открытый сокет.
так как Active:=true это указание начать соединяться, он соединяеться а вы в это время пытаетесь отправить данные, сами понимаете что они никуд а не пойдут.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.02.2012, 17:05   #5
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
По умолчанию

они приходят, я сказал же все работает. Я логин и пароль, загонял на Едит , в два Едита , после этого, как-то хочу сверить. С приходом данных я посторался. Все работает, я же сказал, не ругать мой код. Если есть какие-то мысли по новому коду, почему бы не выложить, или же чем коментировать мои обработчики
Thief_Brother вне форума Ответить с цитированием
Старый 26.02.2012, 17:27   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

я лично не понимаю вообще проблемы, информацию получили, и сравнили, в чем дальше то проблема?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.02.2012, 18:43   #7
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
По умолчанию

и в инете она работает, не только локально. Я же сказал, код рабочий.
В чем проблемма? Ну я же написал :
Тут, я отделяю префиксы от логинов и паролей. А вот где хранить и как сверять я не знаю...
Thief_Brother вне форума Ответить с цитированием
Старый 26.02.2012, 18:44   #8
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
По умолчанию

молги бы мы поговорить те-та-тет. По аське например ?
Thief_Brother вне форума Ответить с цитированием
Старый 26.02.2012, 18:49   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы имеете в виду по каждому клиенту?

через Socket.Data можно хранить что угодно.(через кастинг естественно, и не забывая очищать память при отключении)

рабочий код говорите?
у вас else левый, код даже компилироваться не должен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.02.2012, 19:14   #10
Thief_Brother
Пользователь
 
Регистрация: 26.02.2012
Сообщений: 22
По умолчанию

тогда . Есть какие-нибудь идеи, по авторизации "клиента на сервере" ?
Thief_Brother вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с сокетами в php Detka.i.alex PHP 0 30.08.2010 17:15
Работа с сокетами(портами) groooovefree Софт 1 02.07.2010 09:53
Работа с сокетами zumm Работа с сетью в Delphi 10 28.03.2010 15:30
**Работа с сокетами** Яр|/||< (^_^) Работа с сетью в Delphi 4 11.07.2009 18:10
Работа с сокетами vasilii_terkin Работа с сетью в Delphi 2 13.02.2007 11:08