Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
2-1152105049
XTD
2006-07-05 17:10
2006.07.23
Код пробела?


15-1151160348
Gbp
2006-06-24 18:45
2006.07.23
Неудобный отчет по утечкам памяти в BDS2006.


15-1151218322
Nic
2006-06-25 10:52
2006.07.23
Какие преимущества даёт компонент TActionList?


15-1151246456
Ketmar
2006-06-25 18:40
2006.07.23
pe-cryptor.


15-1150699761
QuickFinder
2006-06-19 10:49
2006.07.23
Алгоритмы сжатия и шифрования




   Наверх