Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как послать и принять данные? 
V
    Опции темы
DragonFire
Дата 28.2.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Вообщем пытаюсь научится передовать строчку текстовую от клиента к серверу через инет. Вот код запуска/остановки сервера:
Код

procedure TForm1.bRunClick(Sender: TObject);
begin
  if not SocketServer.Active then begin
    SocketServer.Port:=2225;
    Status.Lines.Add('Сервер запущен');
    SocketServer.Open;
  end
  else Status.Lines.Add('Сервер уже запущен');
end;

//Остановка сервера
procedure TForm1.bStopClick(Sender: TObject);
begin
  SocketServer.Close;
  Status.Lines.Add('Сервер остановлен');
end;

А вот как послать и принять данные, или хотябы инициализировать клиент чето незнаю. Точнее покопался в готовом коде примеров, чето нифига не заработало smile 


--------------------
PM MAIL ICQ   Вверх
Matematik
Дата 28.2.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Отправлять ClientSocket1.Socket.SendText('текст')
Принимать в событии OnClientRead через Socket.ReceiveText

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    bSendtext: TButton;
    Edit1: TEdit;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    bConnect: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure bConnectClick(Sender: TObject);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure bSendtextClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bConnectClick(Sender: TObject);
begin
  ClientSocket1.Port := 12398;
  ClientSocket1.Host := 'localhost';
  ClientSocket1.Open;
end;

procedure TForm1.bSendtextClick(Sender: TObject);
begin
  ClientSocket1.Socket.SendText(edit1.text)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ServerSocket1.Port := 12398;
  ServerSocket1.Open;
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('Слиент соединился');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage(Socket.ReceiveText);
end;

end.

PM MAIL WWW ICQ   Вверх
DragonFire
Дата 28.2.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Все конечно здорово, спасибо, НО:
1) при отключенном сервере выдается ошибка, как проверить произошло ли соединение с сервером или был сбой?
2) при попытке отправить сообщение вылетает ошибка и на сервере и на клиенте аля:
Socker error 10053 на клиенте 
Windows Socket Error: Запрос на отправку или получение данных no adress was supplied (10057) на сервере
З.Ы. клиент и сервер - отдельные программы, запускающиеся с одного компа smile

Добавлено @ 17:43 
Так с ошибкой разобрался, немного напутал там smile
Остается тока первый пункт 
1) при отключенном сервере выдается ошибка, как проверить произошло ли соединение с сервером или был сбой?


--------------------
PM MAIL ICQ   Вверх
Matematik
Дата 28.2.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



В неблокирующем режиме (по умолчанию) о соединении говорит событие OnConnect. Ошибки ловятся в событии OnError/
Писать в cокет клиент может после (или в) события OnWrite
PM MAIL WWW ICQ   Вверх
DragonFire
Дата 28.2.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



А как всеже заставить клиент не выдавать ошибок? Добивил обработку свою события onError, всеравно выдается сначало мое уведомление а потом ошибка...


--------------------
PM MAIL ICQ   Вверх
Matematik
Дата 2.3.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Справку по OnError почитай
PM MAIL WWW ICQ   Вверх
DragonFire
Дата 2.3.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Отлично спасибо smile
Конечно в хелпе не рылся, но сам догнал:
Код

ErrorCode:=0;


И наконец последнее что меня мучит smile
Как заставить сервер послать ответ клиенту?


--------------------
PM MAIL ICQ   Вверх
dodik
Дата 3.3.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.3.2007

Репутация: нет
Всего: нет



ServerSocket1.Socket.Connections[0].SendText('text');
PM MAIL   Вверх
DragonFire
Дата 4.3.2007, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Спасибо всем smile 
Вопрос решен


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.