Текущий архив: 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