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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите!!! sockets 
:(
    Опции темы
nickelfire
Дата 22.12.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В общем мне необходимо послать текст с одного компа на другой. Ну я использовал TServersocket & TClientSocket.

Приложение клиент:
cliensocket1.host:='home1';
cliensocket1.port:=9876;
clientsocket1.active.true;
cliensocket1.socket.sendtext('r');
cliensocket1.active.false;

Приложение сервер:
onclientread(......)...
if socket.receivetext='r' then begin
showmessage('asd');
end;

И порт задал тот-же, и active поставил true, а онаработать на хочет - говорит asynchronous socket error 10061.Что делать?
PM MAIL   Вверх
SlaUr
Дата 22.12.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



может не в этом дело но я когда пробовал в host писал ip адресс
например 160.90.132.19

PM MAIL   Вверх
Guest
Дата 22.12.2004, 20:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











SlaUr а все потому что сокет по умолчанию не работает в ассинхронном режиме, а в ты принимаешь потоки (threads) onclientread(....) принимай свойством OnClientRead
  Вверх
Akella
  Дата 23.12.2004, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



в свойстве TClientSocket OnConnect
ForSend - глобальная переменная типа String

ClientType:=ctNonBlocking
ServerType:=ctNonBlocking

Код

procedure TMainForm.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 socket.SendText(ForSend);
//  ForSend:='';
end;



Код

procedure TMainForm.sbSendClick(Sender: TObject);
begin

 ForSend:=Memo1.Lines.Text;
 ClientSocket1.Close;
 ClientSocket1.Host:=edit1.Text;
 ClientSocket1.Open;

 memo1.Clear;
end;



Может у тебя стоит брендмауэр?
Добавлено @ 11:18
Цитата
может не в этом дело но я когда пробовал в host писал ip адресс
например 160.90.132.19

можно писать просто имя компьютера

кстати, в поставляемых с Delphi примерах, есть пример чата

и еще, попробуй поменять порт, например, на 277

Это сообщение отредактировал(а) dsergey - 23.12.2004, 11:22
PM MAIL   Вверх
nickelfire
Дата 23.12.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спосибо большое! Теперь работает, но шлёт только один раз. Дальше сколько не пробую не отправляет. smile
PM MAIL   Вверх
Akella
  Дата 23.12.2004, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



что значит шлет только один раз?
и, кстати, не можешь ли сказать, что помогло конкретно

Это сообщение отредактировал(а) dsergey - 23.12.2004, 12:53
PM MAIL   Вверх
nickelfire
Дата 28.12.2004, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я просто заменил имя компа на ip-шник. А не шлёт значит просто посылает только один раз, а после этого надо либо перезапускать прогу либо ждать пол часа. Я enabled:=false делаю после каждого "сеанса связи".
PM MAIL   Вверх
Akella
Дата 28.12.2004, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата
Я enabled:=false делаю после каждого "сеанса связи".

в каком компоненте?
если в TClientSocket, то это нормально
сначала назначаешь, что отсылать, затем ставишь Active:=True, а в событии OnConnect
socket.SendText('blablabla');

Код

в событии нажатия кнопки

 [b]ClientSocket1.Close;[/b]
 ClientSocket1.Host:=edit1.Text;
 [b]ClientSocket1.Open;[/b]


PM MAIL   Вверх
Pathfider
Дата 5.1.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
попробуй поменять порт, например, на 277

А у мкня с портами до 1024 вообще отказывался работать smile

Это сообщение отредактировал(а) Pathfider - 5.1.2005, 12:02
--------------------
Trust is a weakness
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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