Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-26573
wera
2003-05-28 10:18
2003.06.09
ListBox ..........


1-26602
Dimedrol
2003-05-28 15:12
2003.06.09
Access violation ... in module rtl60.bpl


14-26660
zzet
2003-05-23 00:09
2003.06.09
Мастера на ТВ


1-26487
lightix
2003-05-29 15:06
2003.06.09
Передача данных в Excel из C++ Builder


14-26688
Malder
2003-05-25 13:15
2003.06.09
Что у меня с w2k ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский