Главная страница
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.55 MB
Время: 0.035 c
2-1149847414
Balkon
2006-06-09 14:03
2006.07.02
Причина ошибки Access Violation


2-1149706046
Dr. Andrew
2006-06-07 22:47
2006.07.02
Скрол. ListBox1, чтоб показ. записи из Списка(1000000) порциями?


2-1149778397
Vasiliy
2006-06-08 18:53
2006.07.02
Как установит Increment для TrackBar ?


15-1149488116
sound81
2006-06-05 10:15
2006.07.02
Проверка актуальности антивирусных баз


15-1149595640
Marser
2006-06-06 16:07
2006.07.02
История повторяется...