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

Вниз

Как заставить два 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
2-1151993523
Urvin
2006-07-04 10:12
2006.07.23
статическая переменная?


15-1149684595
oldman
2006-06-07 16:49
2006.07.23
супертяжелое вооружение...


15-1151015281
DevilDevil
2006-06-23 02:28
2006.07.23
Синус двойного угла


15-1151205760
Аццкий юзар
2006-06-25 07:22
2006.07.23
А можно юзать ShellAbout? Микрософт не против?


15-1150786464
гастрит
2006-06-20 10:54
2006.07.23
Активация винды