Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

передача данных по сети   Найти похожие ветки 

 
Тимофей Юрьевич ©   (2006-06-15 13:57) [0]

подскажите как быть и что использовать,задача такая:
клиент открывает форму,вписывает логин/пароль нажимает кнопку,по нажатию кнопки данные должны отсылаться на сервер,там проверяется если такой пользователь и пароль к нему,если да,то открывается основное окно у клиента.
Как реализовать? Спасибо


 
Сергей М. ©   (2006-06-15 13:59) [1]

Сервер, надо понимать, тобой уже реализован ?


 
StriderMan ©   (2006-06-15 13:59) [2]

TServerSocket, TClientSocket


 
Тимофей Юрьевич ©   (2006-06-15 14:03) [3]

сервер не реализован


 
Сергей М. ©   (2006-06-15 14:04) [4]


> сервер не реализован


Тогда начни с сервера.


 
Тимофей Юрьевич ©   (2006-06-15 14:17) [5]

почему sendtext срабатывает только со второго раза?


 
Сергей М. ©   (2006-06-15 14:18) [6]

Бывает и с тридцатьлохматого) ...

Ошибка у тебя , барин, в 17-й строке !)


 
Тимофей Юрьевич ©   (2006-06-15 14:26) [7]

хех,когда нажимаю "послать"
clientsocket1.Host:="***";
clientsocket1.Active:=true;
clientsocket1.Socket.SendText(edit1.Text+"/"+edit2.Text);
clientsocket1.Active:=false;

в сервере на прием скажем:
if socket.ReceiveText = "gg/tt" then
form1.Caption:="Super";

каптион меняется только после второго раза нажатия на кнопку "послать"


 
Zeqfreed ©   (2006-06-15 14:27) [8]

Могу предположить, что нехватает завершающей последовательности CRLF или ещё какая-либо ошибка в запросе.


 
Zeqfreed ©   (2006-06-15 14:28) [9]

А я почему-то подумал, что это веб-сервер :) Извиняюсь, предыдущий пост не брать во внимание.


 
Сергей М. ©   (2006-06-15 14:30) [10]


> clientsocket1.Host:="***";
> clientsocket1.Active:=true;
> clientsocket1.Socket.SendText(edit1.Text+"/"+edit2.Text); //вот она, 17-я строка ! Нет никакой гарантии, что в неблок.режиме в рез-те выполнения предыдущей строчки соединение с сервером действительно установлено.
>
> clientsocket1.Active:=false;


 
Dmitrij_K   (2006-06-15 14:30) [11]

какой у сокета режим?


 
Тимофей Юрьевич ©   (2006-06-15 14:40) [12]

да,поменял у ClientSocket1.clienttype на ctBlocking и теперь все оки!
Спасибки


 
Тимофей Юрьевич ©   (2006-06-15 14:49) [13]

хм...сервер принимает текст,а как можно обратно клиенту послать текст?


 
Сергей М. ©   (2006-06-15 14:55) [14]

с обработчике какого события ?


 
Тимофей Юрьевич ©   (2006-06-15 15:02) [15]

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
if socket.ReceiveText = "gg/tt" then
form1.Caption:="gg";
end;


 
Сергей М. ©   (2006-06-15 15:13) [16]

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
 ..
 while Socket.SendText("На тебе, клиент, обратно текст !") = -1 do
   Application.Processmessages;
 ..
end;


 
Тимофей Юрьевич ©   (2006-06-15 15:21) [17]

чет не то


 
Сергей М. ©   (2006-06-15 15:22) [18]

Ну тады бросай затею


 
Тимофей Юрьевич ©   (2006-06-15 15:23) [19]

в onread клиента надо вписать
edit3.Text:=socket.ReceiveText; ???


 
Сергей М. ©   (2006-06-15 15:24) [20]

Это уж тебе визнее, что ты туда "впишешь".

А смысл и назначение метода ReceiveText при этом остается неизменным


 
Тимофей Юрьевич ©   (2006-06-15 15:32) [21]

чет я запутался,
в сервере получается

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
if socket.ReceiveText = "bagos/timatima" then
while Socket.SendText("vvvvvvv") = -1 do
Application.Processmessages;
end;

в клиенте
procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
edit3.Text:=socket.ReceiveText;
end;


 
Сергей М. ©   (2006-06-15 15:50) [22]

Ну и ?
В ЧЕМ запутался-то ?


 
Тимофей Юрьевич ©   (2006-06-15 15:53) [23]

данные от сервера к клиенту не передаются


 
Сергей М. ©   (2006-06-15 16:00) [24]

На то есть отладчик.

Воспользовался им ?
Или первый раз в жизни слышишь это слово ?


 
Тимофей Юрьевич ©   (2006-06-15 16:11) [25]

не,не в первый;)


 
Сергей М. ©   (2006-06-15 16:42) [26]

Ну так воспользуйся им !
В чем дело-то ?


 
Тимофей Юрьевич ©   (2006-06-15 16:44) [27]

вылезает ошибка
Asynchronous socket error 10053


 
Сергей М. ©   (2006-06-15 16:50) [28]


> вылезает ошибка


А ты ее тапком ! Тапком !)

Эт что, отладчик показал ту самую ошибку ? Или "что вижу, то и пою" ?


 
Тимофей Юрьевич ©   (2006-06-15 16:56) [29]

тапком не дается!)
это компилятор,отладчиком пользоваться не умею :(


 
Сергей М. ©   (2006-06-15 16:57) [30]

Плохо.
Срочно учись им пользоваться.


 
Тимофей Юрьевич ©   (2006-06-15 17:49) [31]

а как сервер понимает что отправка идет клиенту и его хост
if socket.ReceiveText = "bagos/timatima" then
socket.sendtext("Start");

???


 
Тимофей Юрьевич ©   (2006-06-15 18:19) [32]

народ,подсобите плиз


 
Тимофей Юрьевич ©   (2006-06-15 18:54) [33]

все понял,все норм работает если флаг ctNonBlocking,но при этом опять проблема при нажатии кнопки послать,срабатывает дествие только со второго раза


 
jb   (2006-06-15 18:59) [34]

Короче есть у TClientSocket событие OnConnect там пиши как ему текст отправлять. Хошь пример на мыло?


 
medved_68 ©   (2006-06-16 10:43) [35]


> clientsocket1.Host:="***";
> clientsocket1.Active:=true;

Далее в клиенте пропиши
procedure ClientSocketOnConnect
begin
ClientSocket1.Socket.SendText("I am Vasja");
end;
procedure ClientSocketOnRead
var
sd:string;
begin
sd:=ClientSocket1.Socket.ReciveText;
...А дальше что хочешь делай с принятой строкой
end;

на сервере подними

procedure ServerSocket1.OnСlientRead
var
i:integer;
begin
for i:=0 to ServerSocket1.Socket.ActiveConnections do
begin
if ServerSocket1.Socket.Connections[i].ReciveLength > 0
then
begin
......либо принимаем данные и проверяем
....либо что то отправляем этому клиенту
end;
end;

И все должно работать как часы в режиме stNonBlocking;


 
Сергей М. ©   (2006-06-16 10:58) [36]


> medved_68 ©   (16.06.06 10:43) [35]


Ну и зачем нужен этот цикл в обработчике события OnСlientRead ?


 
medved_68 ©   (2006-06-16 11:55) [37]

Если подключено несколько клиентов и один из подключенных что там передал



Страницы: 1 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.009 c
2-1149764652
Megabyte
2006-06-08 15:04
2006.07.02
Программное создание пользователя в MSSQL


2-1150162633
Mozart
2006-06-13 05:37
2006.07.02
TWebBrowser


2-1149829599
Dimich1978
2006-06-09 09:06
2006.07.02
addobject выдает несовместимость типов


15-1149660937
alex_drob
2006-06-07 10:15
2006.07.02
Софт для спутниковых ресиверов


3-1146728733
Alexey V.
2006-05-04 11:45
2006.07.02
Курс валюты в выходные дни





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский