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