Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2013, 00:21   #11
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Вроде помогло. проверил правда на одном компе. Одновременно запустил сервер и клиент. Нажал на кнопку - ничего, потом еще раз нажал и заработало. Получается что тормозит почему то. С первого нажатия на кнопку не получается. Как решить эту проблему?
И второй вопрос. Что лучше использовать Indy (которые работают во втором примере) или Соккеты (которые описывает Фленов)?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 05.04.2013, 00:43   #12
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Indy вес большой имеют, если хотите вес меньше то лучше неиспользовать компоненты, а писать руками о чем тоже упоминал в этой книге Фленов.

WinSock хорошо использовать. Еще обратите внимание на Synapse


Добавьте на сервер Мемо и посмотрите что с переменной S приходит возможно там иногда лишние символы приписываются

Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 S: AnsiString;
begin
 s:= Socket.ReceiveText;
 Memo1.Lines.add(s); //будет видно ваши комманды посланные с клиента

Последний раз редактировалось Aliens_wolfs; 05.04.2013 в 22:53.
Aliens_wolfs вне форума Ответить с цитированием
Старый 05.04.2013, 10:33   #13
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Спасибо. Но теперь другая проблема. С первого нажатия на кнопку ничего не происходит. Нажимаю один раз - ничего, потом второй раз - код выполняется, опять нажимаю - ничего, опять - работает. Тоесть работает через один клик.
Код сервера
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.active:=true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
serversocket1.active:=false;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 S: AnsiString;
begin
 s:= Socket.ReceiveText;
 Memo1.Lines.add(s);
end;
Код клиента
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Host:=edit1.text;
clientsocket1.active:=true;
clientsocket1.Socket.SendText('test');
clientsocket1.active:=false;
end;
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 05.04.2013, 22:39   #14
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Ваша проблема в том что вы делаете постоянно подключение и шлете сообщение, а потом отключение от сервера, так ненужно делать сообщение неуспевает дойти до сервера, так как вы отключаетесь от него.
Лучше сделайте следующее, добавьте в клиент 2 кнопки, одна для подключения к серверу и отключения от него, вторая для отправления сообщений, и нажимайте ее сколько угодно, должны сообщения сразу без потерь приходить на сервер.
Код:
// С помощью этой кнопки вы делаете подключение к серверу и отключение от него
procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Host:=edit1.text;
// Если подключение неактивно то делаем его активным и меняем название кнопки то что следующиее ее нажатие будет отключение
if not clientsocket1.active then
Begin
Button1.caption:= 'Disconnect';
clientsocket1.active:=true;
end
else
// Если подключение активно то делаем его неактивным и меняем название кнопки то что следующиее ее нажатие будет подключение
begin
Button1.caption:= 'Connect';
clientsocket1.active:=false;
end;

end;

// с помощью этой кнопки шлем сообщение
procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.Socket.SendText('test');
end;

Последний раз редактировалось Aliens_wolfs; 05.04.2013 в 22:55.
Aliens_wolfs вне форума Ответить с цитированием
Старый 06.04.2013, 12:56   #15
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Спасибо!!!
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача Конь и Ферзь Leopold8220 Паскаль, Turbo Pascal, PascalABC.NET 0 13.02.2013 20:05
Помогите найти биографию Михаила Фленова serega3812 Свободное общение 62 04.09.2012 22:23
На шахматной доске определить поля, в которые может попасть конь из указанной позиции. ValeriySergeevich Помощь студентам 0 24.02.2012 22:31
Конь анна2709 Помощь студентам 1 12.04.2011 21:07
Диск к книге Михаила Фленова sysyman Свободное общение 19 19.05.2009 11:21