Zdravim.
Potřeboval bych poradit s jedním problémem. Jde mi o to jak zjistit IP adresu síťové karty, která je svázána s určitým portem, který je aktivní.
Asi uvedu příklad. Mám postgresql server a přopojenýho klienta v jedné síti. Problém je ovšem takový, že klient má více síťových zařízení (eth0, wlan0). Znám adresu serveru, i port ( v tomto případě standartní port pro posrgresql 5432). Dokážu si získat spojový seznam IP adres klienta (tedy dříve zmiňované eth0, wlan0), ale už z nich nedokážu vybrat tu jedinou, která je svázána s portem 5432.
Fórum › C / C++
Zjištění IP adresy pomocí portu
mam pocit ze se to dela tak, ze se proste pokusis na port pripojit.. pokud neni port otevreny tak to skonci s chybou
a pokud je to spolehlive na lokalnim pocitaci tak vyuzit netstat | grep ... a z nej si ty data vyparsovat
#2 KIIV
díky. Port 5432 už jistě bude otevřený, protože mám navázané spojení server-klient. I výpis netstat mi to potvrzuje. Nyní hledám způsob, jak pomocí známých informací (IP adresa serveru, port 5432), když vím že jsem připojen, nalézt IP adresu klienta, na klientské stanici v případě, že tato stanice má více síťových zařízení. Spojení serv-klient je navázaná pomocí funkcí knihovny libpg-fe.h, tedy neznám socket ID,...
Druhou metodu mám v záloze.
takze ty mas otevrenej socket ve svym programu a chces zjistit jakou ip adresu system pouzil?
ze socketu se da vytahnout info o obou stranach spojeni a klientska cast se vyplni systemem pri pripojeni (nebo se pripadne da nastavit z jake IP a portu se ma klient pripojovat pomoci bind() i u klientskeho socketu)
EDIT: getsockname by melo vykonat to kouzlo (nad oteverenym socketem urcite)
EDIT2: pokud chces zjistit na serveru tak by to mel vracet primo accept nebo se to da zjistit pomoci getpeername nad filedescriptorem
#4 KIIV
Super. Díky moc za cenné info. Tohle by mohlo býto to pravé ořechové. Původně jsem cestu přes sockety zavrhl, protože jsem neznal socketfd už vytvořeného spojení, ale po pořádném proykoumání knihovny libpq-fe jsem zjisiti, že ho dokáže vrátit, a tím pádem už i vím jak ty info pomocí socketu získat. Každopádně díky moc
ono stejne jsou filedescriptory cislovany od 0 do 1023.. pricemz 0,1,2 jsou obsazeny stdin, stdout, stderr,... stacilo by si pak projet ty vyssi jestli existuji a tak..
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zjištění IP adresy — založil dragon124
Zjištění adresy — založil tonez
Zjištění požadované adresy v error dokumentu 404 — založil Marek Štafl
Zjištění IP adresy počítačů připojených do lokální sítě — založil Honza Bažant
Ovládání seriového portu pomocí C — založil Neznámý
Moderátoři diskuze