Sockety

0

Jak wyslac do servera od clineta wiecej niz jeden Socket naraz ?? Czy jest to w ogóle mozliwe... Lub jak w jednym Sockecie wyslac 2 rozne teksty ?--Ozyrys Pozdrawiam !

0

serversocket1.Socket.Connections[0].SendText('TEXT'); - to jeżeli wysyła przez serwer Socketconnections[numer gosci, ktory sie polaczyl z toba - wedle czasu - od pierwszego do ostatniego] - chyba :)

clientsocket1.socket.SendText('TEXT'); - jezeli sie z kims połączyłeś

jeżeli chodzi ci o wsysylanie tak ciągle tej samej wiadomości to:

najlepiej przez pętlę for

procedure spamuj_drania(Tekst : string);
var
i :integer;
begin
for t:=0 to 200 do
begin
serversocket1.Socket.Connections[0].SendText('TEXT'); - to jeżeli wysyła przez
lub
clientsocket1.socket.SendText('TEXT'); - jezeli sie z kims połączyłeś
end;
end;

Jeżeli masz jeszcze jakieś pytania to mailnij do mnie.

Pozdrawiam {hello}

0

ok thx :-) !!

Powiedzmy ze wysylam 3 sockety do servera :

ClientSocket1.Socket.SendText('text');
ClientSocket1.Socket.SendText('text');
ClientSocket1.Socket.SendText('text');

a co jesli chce zeby kazdy odnosli sie do czegos innego ??

ClientSocket1.Socket.SendText('text'); *ten ma by wklejony do Edit1
ClientSocket1.Socket.SendText('text'); *ten do Edit2
ClientSocket1.Socket.SendText('text'); //a ten Edit3

czy jest to w jakis sposob mozliwe ???

--Ozyrys Pozdrawiam !

0

Po pierwsze: nie wysyłasz socketów tylko tekst!

A jeżeli chodzi o te z tym edit'ami to jest to jak najbardziej mozliwe!

ClientSocket1.Socket.SendText(edit1.text);
ClientSocket1.Socket.SendText(edit2.text);
ClientSocket1.Socket.SendText(edit3.text);

btw jak podałem:

procedure spamuj_drania(Tekst : string);
var
i :integer;
begin
for t:=0 to 200 do
begin
serversocket1.Socket.Connections[0].SendText('TEXT'); - to jeżeli wysyła przez
lub
clientsocket1.socket.SendText('TEXT'); - jezeli sie z kims połączyłeś
end;
end;

TO w Sendtext ('jako ten tekst'); tylko ze nie zadziala jezeli nie wylaczysz '' - wtedy bedzie dzialac procedura. Dalem 'TEXT' jako w ogóle tekst :) a w ogóle w procedurze jest tekst string;

wiec jezeli chcesz aby procka dzialal poprawnie to:

umiesc pierw tę prockę w "public"
procedure spamuj_drania(Tekst : string);

a potem pod implementation
{sr *dfm} czy cos takiego napisz prockę niżej

procedure spamuj_drania(Tekst : string);
var
i :integer;
begin
for t:=0 to 200 do
begin
serversocket1.Socket.Connections[0].SendText(tekst); - to jeżeli wysyła przez
lub
clientsocket1.socket.SendText(tekst); - jezeli sie z kims połączyłeś
end;
end;

Jezeli nie wiesz dlaczego trza ją dac do public to wyjasniam: Inaczej kompilator nie będzie w stanie znaleźć Serversocket i clientsocket!
{browar} {hello}

0

Źle zorzumiałem :/

Patrz.

Mozesz wysłac takie coś:

clientsocket.sendtext('edit1_OPEK');
clientsocket.sendtext('edit2_OPEK');
clientsocket.sendtext('edit3_OPEK');

lecz na serwerze (server socket) w wątku ONClientRead będziesz musiał umiescic taki oto kod:
var
s : String;
edit : string;
begin
s := Socket.ReceiveText;
edit := Socket.ReceiveText;
delete(s,1,Pos('',s));
delete(edit,Pos('
',edit),Length(edit));
if edit = 'edit1' then
begin
edit1.text := Socket.ReceiveText;
end;

if edit = 'edit2' then
begin
edit2.text := Socket.ReceiveText;
end;

end;

Jeżeli kod nie działa to napisz :) - Wiem, że kod trochę kapiasty ale zawsze jest :]

0

OK Dzieki za pomoc !! :-) {brawo} {browar} {brawo} :-) --Ozyrys Pozdrawiam !

0

...ale jednak zdaje mi sie ze ten kod nie dziala... :(

mozesz wytlumaczyc mi co to oznacza :

delete(s,1,Pos('',s));
delete(edit,Pos('
',edit),Length(edit));

bo niezbyt rozumiem... hmm... --Ozyrys Pozdrawiam !

0

To ja -ql-GORTH :]

OK odpowiadam:

No musi jakoś zidentyfikować: "edit1_cześć, piszę do edit1"

delete - usuwa znacznik jaki chce :)

czekaj ja napisałem źle kod!!!!!!!!

masz tu nowy:

var
s : String;
edit : string;
begin
s := Socket.ReceiveText;
edit := Socket.ReceiveText;
delete(s,1,Pos('',s)); *usuwam z "edit1_cześć, piszę do edit1" 'edit1'
delete(edit,Pos('_',edit),Length(edit)); *usuwam z "edit1_cześć, piszę do edit1" - _cześć, piszę do edit1
if edit = 'edit1' then
begin
edit1.text := s;
end;

if edit = 'edit2' then
begin
edit2.text := s;
end;

end;

i powinno zadziałać

Jeżeli jednak nie to - skontaktuj się ze mną poprzez gg lub ja to zrobię... Tak czy inaczej - pogadamy :)

0

cos mi wychodzi ale nie dokladnie to co chcialem albo cos zle zrobilem...
moze jak sie skontaktujemy to latwiej mnie bedzie wytlumaczyc o co dokladnie mi chodzi a tobi odpowiedziec.

PS. Moj nr. GG = 1772993 a mail [email protected]
--Ozyrys Pozdrawiam !

0

A i jeszcze jedno - jak spowodowac wykonanie przez server jakiejs procedury w inny sposob niz :

if ClientSocket1.Socket.ReceiveText = 'tam cos...' then
//tam cos...
end;

bo o moim zdanim nie jest zbyt praktyczne...

--Ozyrys Pozdrawiam !

0

Można zrobić
case Socket.Receivetext of
costam;
costam;
end;

Dobry sposób? :)

0

Nie mozna uzywac w tekstu w instrukcji case - przynajmniej w Delphi--Pawel

Delphi6

1 użytkowników online, w tym zalogowanych: 0, gości: 1