var
command:String;
...
procedure TForm1.ServerSocketClientRead(Sender:TObject; Socket:TCustomWinSocket);
begin
...
command:=Socket.Receive; //команда будет записана в эту переменную
...
end;
ClientSocket,serverSocket
Пишу на Делфи 6.Я знаю как сделать чтобы clientsocket отправил команду удаленному серверу,сервер ее принял и выполнил то, что нужно.Только есть одно но.Мне надо чтобы клиент отправил удаленному серверу значение скажем spinedit1 к примеру.Кто знает как это сделать?
С уважением,SNAKE
ClientSocket.Socket.SendText('-->и вот тут команда<--');
А на сервере через событие сокета ClientRead
Код:
P.S. ты ж сказал знаешь как?!
Тогда это уже называется "разработать протокол" :)
Приведи пример обработчиков событий, выложи часть исходников для происнения, что значит "отправил команду удаленному серверу,сервер ее принял и выполнил" и "отправил удаленному серверу значение скажем spinedit1".
ClientSocket.Socket.SendText('-->и вот тут команда<--');
да,это я знаю...Только я вот не знаю как передать и принять то что написано в spinedit...
Что хочет автор ?
Код:
ClientSocket.Socket.SendText(CSpinEdit1.Text);
не подходит???
Код:
ClientSocket.Socket.SendText(CSpinEdit1.Text);
не работает а если просто
Код:
ClientSocket.Socket.SendText(SpinEdit1.Text);
но сервер ее принимать не хочет
выложи код, который у тебя на сервере
Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
s:=socket.ReceiveText;
if s='start' then
halt;//к примеру
Socket: TCustomWinSocket);
var
s:string;
s:=socket.ReceiveText;
if s='start' then
halt;//к примеру
Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
Код:
ClientSocket.Socket.SendText(SpinEdit1.Text);
Цитата: kastron
>выложи код, который у тебя на сервере
Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
s:=socket.ReceiveText;
if s='start' then
halt;//к примеру
Socket: TCustomWinSocket);
var
s:string;
s:=socket.ReceiveText;
if s='start' then
halt;//к примеру
begin вапщето забыл забыл...
и посмотри что приходит на сервер... типа showmessage(s);
рабочий пример:
Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var msg,submsg,substr:string;
position:integer;
begin
msg:=Socket.ReceiveText;
position:=pos('*:',msg); //определяю позицию метки
submsg:=copy(msg,0,position-1); //режу строку на информацию до метки, и после метки
substr:=copy(msg,position+2,length(msg)-position);
//Socket.SendText('submsg: '+submsg);
//Socket.SendText('substr: '+substr);
if submsg='dir' then begin
directorylistbox1.Directory:=substr;
Socket.SendText('dir*:'+directorylistbox1.Items.Text);
filelistbox1.Directory:=substr;
Socket.SendText('file*:'+filelistbox1.Items.Text);
end;
Socket: TCustomWinSocket);
var msg,submsg,substr:string;
position:integer;
begin
msg:=Socket.ReceiveText;
position:=pos('*:',msg); //определяю позицию метки
submsg:=copy(msg,0,position-1); //режу строку на информацию до метки, и после метки
substr:=copy(msg,position+2,length(msg)-position);
//Socket.SendText('submsg: '+submsg);
//Socket.SendText('substr: '+substr);
if submsg='dir' then begin
directorylistbox1.Directory:=substr;
Socket.SendText('dir*:'+directorylistbox1.Items.Text);
filelistbox1.Directory:=substr;
Socket.SendText('file*:'+filelistbox1.Items.Text);
end;
а что значит "сервер её принимать не хочет", ошибку выдает чтоли?
Цитата: kastron
Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
а где ты хочешь её читать???
..если чё она сразу в s и сохранится...
Вся проблема была в портах, порт в винде моей был чемто занят, и типа для моего клиента закрыт, поменял порт, всё как по маслу пошло.
Может ошибка в этом ??
Клиент:
1)В обработчике, например нажатия на кнопку, нужно настроить адрес и порт клиента, а затем активировать его;(Установка соединения с серверо. При нажатии на кнопку, сервер должен уже быть запущен!!!)
Привожу пример Си - кода, думаю переделать его в Pas не составит труда)
Код:
if(ClientSocket1->Active)
ClientSocket1->Active = false;// Если подключены, то отключаемся
Server = "localhost";// адрес по-умолчанию
// Вводим адрес
if(InputQuery("Input Address", "Address", Server))
{
if(Server.Length() > 0)
{
ClientSocket1->Host = Server;
ClientSocket1->Port = 1000;
ClientSocket1->Active = true;
}
}
ClientSocket1->Active = false;// Если подключены, то отключаемся
Server = "localhost";// адрес по-умолчанию
// Вводим адрес
if(InputQuery("Input Address", "Address", Server))
{
if(Server.Length() > 0)
{
ClientSocket1->Host = Server;
ClientSocket1->Port = 1000;
ClientSocket1->Active = true;
}
}
2)Например на кнопку повесить отсылку какого-либо сообщения(будем отсылать методом SendText()).
Код:
ClientSocket1->Socket->SendText(CSpinEdit1->Text);
Сервер:
1)В конструкторе формы нужно настроить адрес и порт, а затем активировать сервер;
Код:
// Инициализация сервера
ServerSocket1->Port = 1000;
ServerSocket1->Active = true;
ServerSocket1->Port = 1000;
ServerSocket1->Active = true;
2)В обработчике события OnClientRead считать отосланую клиентом строку.
Код:
// Принимаем сообщение и добавляем его в TMemo для визуализации)
String receive = Socket->ReceiveText();
Memo1->Lines->Add(receive);
String receive = Socket->ReceiveText();
Memo1->Lines->Add(receive);
З.Ы. К Bilder прилагаеться самый простейший вариант чата, посмотри его(в патке Buider'a Examples/Internet/Chat).Да, и здесь в разделе исходников был более продвинутый чат на основе этих компонент, правда со незначительными багами)
Цитата: kastron
Код:
ClientSocket.Socket.SendText(CSpinEdit1.Text);
не работает а если просто
Код:
ClientSocket.Socket.SendText(SpinEdit1.Text);
но сервер ее принимать не хочет
А соединение установлено??? А сокеты в каком режиме работают??? И как узнал что сервер не хочет принять сообщение??? А может принял, да ты не прочитал его??? И что нам вещает функция SendText - анализировал???
kastron как видишь вопросов больше чем ответов.:)
Цитата: kastron
>выложи код, который у тебя на сервере
Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
[COLOR="Red"]s:=socket.ReceiveText;[/COLOR]
if s='start' then
halt;//к примеру
Socket: TCustomWinSocket);
var
s:string;
[COLOR="Red"]s:=socket.ReceiveText;[/COLOR]
if s='start' then
halt;//к примеру
Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
Код:
ClientSocket.Socket.SendText(SpinEdit1.Text);
Как ты незнаешь, как ее прочитать? А выделеной строке, ты что делаешь?)
Уважаемые участники форума.Болъшое спасибо за помощъ.Всё работает.Я просто ступил с receivtext.С уважением,Snake