Numer/IP connections

0

mam w TServerSocket coś takiego
server.socket.connections[80.50.36.77].sendtext('das');
tylko zamiast IP jest numer połączenia a ja nie wiem jak sprawdzić jaki IP ma jaki numer, ten kto pracował na socketach bedzie wiedział o co chodzi jest taki problem że jak zrobie
server.socket.connections[2].sendtext('das');
to das wyśle mi do drugiego w kolejności podłączonego klienta
jak zrobić tzn jak sprawdzić jakie IP ma jaki numer PLIS <font color="red">POMÓŻCIE!!!</span>

0

Tablice...

0

Prosze konkretniej!

0

Prosze konkretniej!

tablice dwuwymiarowe

0

ROTFL ssorry nie mogłem sie powstrzymać ;p ;p ;p

0

lofixowi chodzi o to (chyba) zebys zapisywal do tablicy numer podlaczonego komputera i jego ip lub nazwe
type cztery = record
opek : array[0..3] of integer;
end;

type tkomputer = record
numer : integer;
ip : array[0..3] of integer; //chyba byte wystarczy ale nie wole sprawdzac
nazwa : string;
end;

var
num_komp : array[0..99] of tkomputer;
//tutaj jeden haczyk ustawia mze max podlaczen moze byc jedynie (hmm jedynie) 100
komp_count : integer = 0; //potrzebne przy wyliczeniu
function reteive_kompinfo : tkomputer;
function str_to_ip :

function reteive_kompinfo : tkomputer;
var
opek : tkomputer;
ip : string;
begin
//teraz nie wiem czy sie uzywalo ServerSocket1.Socket.remotehost czy cos innego, ale uzywam remote
numer := komp_count;
nazwa := ServerSocket1.Socket.remotehost;
ip := ServerSocket1.Socket.remoteaddres;

end;

pozniej w onclientconnect
begin
inc(komp_count);
if komp_count > 100 then begin showmessage('Limit połączeń nie wie ograniczony, przerwany?'); exit;end;
num_komp[komp_count] := reteive_kompinfo;
end;

kurde dalej mi sie psiac nie chce psize to z pamieci i nie wiem jak delphi bedzie reagoawc itp. lol ze ja to w ogole zaczalem pisac :>
glupi chyba jestem

0

Sprawdza się : ServerSocket1.Socket.Connections[numer].RemoteAddress;

Nie wiem czy oto ci chodziło. [cya]

0

rotfl omg imo lol

0

Nie radzę robić tego na adresie IP, bo np. kilka osób się może łączyć zza NATu, albo ktoś może uruchomić w klienty na kompie. Lepiej użyć uchwytu połączenia TCustomWinSocket.SocketHandle.

0

Więc po pierwsze: Delphi zaczyna liczenia od 0, więć jeśli napiszesz Connections[2], to dla Delphiego jest to połączenie 3cie. Zresztą mam podobny problem. Ale jeszcze myśle nad rozwiązaniem ;-)

0

<font color="green">Więc po pierwsze: Delphi zaczyna liczenia od 0, więć jeśli napiszesz Connections[2], to dla Delphiego jest to połączenie 3cie.</span>

To deklarujesz:

<font color="blue">tablica: array [1..</span> itd..

zamiast:

<font color="blue">tablica: array [0..</span>

0

for i := 0 to server.Socket.ActiveConnections -1 do
begin
If server.Socket.Connections[i].RemoteAddress = '80.50.36.77' then
server.socket.connections[i].SendText('das');
end;

i voila, a jeśli chodzi i identyfikowanie połączeń z tego samego IP to robi się to sprawdzając z jakiego portu łączy się klient.

server.Socket.connections[i].RemotePort

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