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

Вниз

Как заставить два TClientSocket отправлять одновременно текст!!!   Найти похожие ветки 

 
Новочеркасский Волк ©   (2006-03-13 21:49) [0]

Здравствуйте. Подскажите пожалуйсто вот мне надо чтоб по нажатию Buttion1 ClientSocket1 отправлял своему серверу текст (доустим) "ааа", а ClientSocket2 отправлял текст "ввв" своему серверу. Когда это осуществляеш вылетает ошибка, что типа нельзя отпра  влять сразу два. Я пробовал, отгораживал их Буливской переменной, что сначала один, потом другой но нет всё рано не могут!!! Подскажите что делать. Срочно надо!!!
----------------------------------------------
Заранее очень благодарен!!!


 
Kacnep ©   (2006-03-14 06:33) [1]

Не может такого быть. Правда сам именно так не пробовал. Скорее всего у тебя идет работа с одним портом...
В общем дай для начала такую инфу.
Дельф?
Блок или НеБлок?
И кусок кода твоей отправки.

Схема примерно должна быть следующая
(для НеБлок)
1. По нажатию
 назначаешь IP_Server1:PORT1
 назначаешь IP_Server2:PORT2
 Socket1.Open
 Socket2.Open

На событие ОнКоннектСокет_1 вешаешь отправку строки Тест1
Закрыть Сокет1
На событие ОнКоннектСокет_2 вешаешь отправку строки Тест2
Закрыть Сокет2

Ну и Еррор1 и Еррор2 выводи себе для инфы

В блокирующем режиме тоже самое но последовательно и лучше сразу рекомендую вывести в поток - круче. Или Заюзай Инди.


 
seeker ©   (2006-03-14 10:53) [2]

Я не знаю что там не работает, но этот кодработает
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ScktComp;

type
 TForm1 = class(TForm)
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   Button1: TButton;
   procedure ServerSocket1ClientConnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure Button1Click(Sender: TObject);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Button1.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Socket.Connections[0].SendText("bbb");
ClientSocket1.Socket.SendText("aaa");
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;

end.

Или я что-то не так понял?


 
Новочеркасский Волк ©   (2006-03-14 15:52) [3]

Вот код моей проги посмотрите что не так???
Клиент:

procedure TForm1.Button1Click(Sender: TObject);
begin
if Bruud=true then
begin
ClientSocket1.Socket.SendText("E1");

Bruud:=False;
end;
If Bruud=False then
begin
ClientSocket2.Socket.SendText("E2");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Bruud:=True;
end;

--------------------------------------------------------------
Сервер:

var
A, B: String;
 Form1: TForm1;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
A:=ServerSocket1.Socket.ReceiveText();
Edit1.Text:=(A);
end;

procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
B:=ServerSocket2.Socket.ReceiveText();
Edit2.Text:=(B);
end;

-----------------------------------------------------
Порты разные 2455 и 2466. Вроде должно работать ан нет!!! Подскажите чё где нитак???
---------------------------------------------------
Заранее благодарен!!!


 
Сергей М. ©   (2006-03-14 16:08) [4]


> чё где нитак



procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
A:=Socket.ReceiveText;
Edit1.Text:=(A);
end;


 
Dmitrij_K   (2006-03-14 16:10) [5]

Когда ты отправляешь текст, еще не факт что клиент соединился с  сервером


 
Dmitrij_K   (2006-03-14 16:16) [6]

procedure TForm1.Button1Click(Sender: TObject);
begin
 if ClientSocket1.Active then ClientSocket1.Socket.SendText("E1");
 if ClientSocket2.Active then ClientSocket2.Socket.SendText("E2");
end;


 
Сергей М. ©   (2006-03-14 16:28) [7]

OnWrite() на то существует... для несведущих ..

И нечего изобретать велосипеды в связи с этим фактом.

А сей факт и есть факт разрешения записи очередной инф-ции, требуемой к передаче, в буфер передачи.


 
Новочеркасский Волк ©   (2006-03-14 18:59) [8]

Да спасибо всем. Всё получилось!!!



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

Форум: "Сети";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
2-1151913621
ZZZ_ZZZ
2006-07-03 12:00
2006.07.23
Алгоритм работы архиваторов


3-1147932661
petvv
2006-05-18 10:11
2006.07.23
Трабла с FastReport 3


15-1149582860
Empleado
2006-06-06 12:34
2006.07.23
Поедем на рыбалку?


2-1151931049
Elfebet
2006-07-03 16:50
2006.07.23
Как узнать момент выключения компьютера?


2-1151991076
Kinda
2006-07-04 09:31
2006.07.23
работа с DBGrid ом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский