Форум: "Сети";
Текущий архив: 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