Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Сокеты   Найти похожие ветки 

 
3d   (2003-03-10 17:32) [0]

Народ, нужна помощь. В общем, написал я довольно простую прогу обмена текстовыми сообщениями между локальными компами (без написания специального серверного приложения, т.е. просто вводишь имя хоста и шлёшь ему текст). Проблема в том, что сообщения то доходят, то - нет, т.е. если посылать одно сообщение за другим, то доходит каждое второе.

unit Unit1;
.....

procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit2.Text<>"" then
begin
ServerSocket1.Active:=false;
ClientSocket1.Host:=Edit2.Text;
ClientSocket1.Active:= true;
ClientSocket1.Socket.SendText(Edit2.Text+": "+Edit1.Text);
Memo1.Lines.Add("To "+Edit2.Text+": "+Edit1.Text);
ClientSocket1.Active:= false;
ServerSocket1.Active:=true;
end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Close;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Edit2.SetFocus;
end;

end.


 
Digitman ©   (2003-03-11 11:03) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit2.Text<>"" then
begin
ServerSocket1.Active:=false; // ?? это зачем ?
ClientSocket1.Host:=Edit2.Text;
ClientSocket1.Active:= true; // с кем соединяется клиент, если сервер только что сделан неактивным ?
...
end;
end;


 
Fredericco ©   (2003-03-11 19:50) [2]

2 Digitman © (11.03.03 11:03)
Я так понял, клиент на одной машине может быть и клиентом и сервером. Одновременно и клиентом и сервером он быть не может.

2 3d (10.03.03 17:32)
Идея интересная.

Во-первых. Что у тебя будет если два человека на разных машинах отправят друг другу сообщения приблизительно одновременно?

Во-вторых. Если не планируется расширять и усложнять твой чат, посмотри в Net Help. Если планируется, то вот с такой организацией ты еще помучаешся.


 
Digitman ©   (2003-03-12 08:41) [3]

> Fredericco


> клиент на одной машине может быть и клиентом и сервером


Что значит "клиент на ... машине" ? Может быть таки " приложение на ... машине" ?!


> Одновременно и клиентом и сервером он (кто ??) быть не может.


Приложение может одновременно выполнять любые задачи, в т.ч. реализовывать ф-ции туевой хучи разных программных клиентов и программных серверов. Не вижу никаких ограничений для этого : набросал на одну и ту же форму косой десяток компонентов TServerSocket и TClientSocket - и пользуй на здоровье)

Мне непонятно другое - зачем по нажатию кнопки деактвировать серверные ф-ции приложения, затем пытаться активировать клиентские, и потом опять деактивировать клиентские и вновь активировать серверные ?

>3d

Вот ты делаешь здесь

ClientSocket1.Socket.SendText(Edit2.Text+": "+Edit1.Text);
...
ClientSocket1.Active:= false;

А на основании чего ты уверен, что SendText() гарантированно отсылает инф-цию, после чего ты СРАЗУ ЖЕ преспокойно деактивируешь компонент ?



 
Fredericco ©   (2003-03-12 10:38) [4]

2 Digitman © (12.03.03 08:41)


> набросал на одну и ту же форму косой десяток компонентов
> TServerSocket и TClientSocket - и пользуй на здоровье)


Если в одном приложении TServerSocket и TClientSocket работают по одному порту, и таких приложений о него на каждом комп. в локалке - то это, извини, фигня получится. Это я и имел в виду, когда написал
> Одновременно и клиентом и сервером он быть не может.

Ошибка: не ОН, а ОНО - приложение.


 
Юра   (2003-03-26 16:16) [5]

Люди добрые подскажите где мне взять эти всеми хвалённые компоненты TServerSocket, TClientSocket.
Буду очень благодарен.
За ранее спасибо


 
Digitman ©   (2003-03-26 17:42) [6]


> Юра


известно "где" - в Караганде))

вплоть до Д5 оба "хваленых компонента" мозолят глаза твои в закладке Internet среди закладок со станд.компонентами

в более поздних версиях компоненты убраны в библиотечные каталоги Делфи и по умолчанию в палитру не включены

но ничто не мешает сделать это самостоятельно !


 
Spartak ©   (2003-03-27 10:42) [7]

В delphi 6 компоненты то же есть на вкладке internet ! а вот в dlphi 7 они убранны !


 
VID ©   (2003-03-28 19:24) [8]

А вам что не хватает возможностей Delphi 5 , гении ? ;)


 
K. Mitnik   (2003-03-29 02:22) [9]

Так тема плаво переходит в обсуждение верии Делфинов. НО ВЕДЬ ТЕМА ТУТ ДРУГАЯ (кричу, покраснел). Ну немогут ребята разобраться со стандартными компонентами, ну так посмотрите хотябы стандартный пример-демку, зайди на сайт, возми инфу, ну КАКОГО ФИГА! Сам не захочешь, кто за тебя зделает, или ты думаешь убрал коментарий в начале кода, и ты владелец, бабульки зашибаешь. А ФИГ ВАМ ВСЕМ!
(устал и пошёл спать)


 
tolik2002   (2003-04-08 13:45) [10]

Возможности может хватать и третего Delphi, но почему не использовать 7-й если он уже есть (и возможности среды на много круче). А что касается сокетов то в 7-м они тоже есть, просто не вынесены на палитру компонент, это легко можно сделать и самому. Если будут траблы - пишите, хотя быть их не должно. Щас страдаю примерно такой же задачей, только хочу переделать на UDP.



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-26657
Mazai
2003-05-24 08:28
2003.06.09
звонилка


1-26511
Rulya
2003-05-25 08:14
2003.06.09
Округление чисел


14-26786
Style
2003-05-20 11:21
2003.06.09
Кофе :)


1-26604
Кирилл Г.
2003-05-28 14:25
2003.06.09
Обьединение в Ворде


4-26842
Unknown user
2003-04-11 18:23
2003.06.09
Какие сообщения использовать чтобы выполнять перерисовку котрола