Zdravim,
tenhle dotaz jsem poslal i do builder.cz, ale tam zatim neodpovedeli, tak treba vy budete vedet vic :-)
Kolega udelal nejaky programek v Delphi a ja bych to mel prepsat do PHP. Ma tam oboustrannou komunikaci pres sockety, jenze ma to delany tak, ze na serverove strane, kdyz prijde pozadavek, tak jeho obsluha pomoci accept() mu vrati i parametr (nazev klientskeho socketu), ktery on pouzije pro odpoved klientovi, tzn. on sice vubec nezna adresu/port klienta, ale presto mu muze v pohode odpovedet, protoze zna jeho socket. On vlastne da jenom "reply", kdyz to tak laicky reknu Zatimco ja v PHP musim pro odpoved otevrit dalsi socket s pametry IP/port. Jenze ja pri obsluze prichozich pozadavku neznam IP/port klienta, takze nevim, kam poslat odpoved...
Delam to normalne pres socket_create, socket_bind, socket_listen a socket_accept pro prijeti pozadavku a pak socket_create a socket_connect pro odeslani odpovedi. Jenze proste nevim, jake parametry dat do socket_connect, kdyz nevim, odkud ten prichozi pozadavek prisel.
Zjistis IP pozadavku (to jde bez problemu) a tu IP strcis do socket_create(). Jinou veci je, ze je nutne, aby client spojeni akceptoval. Tedy rekneme obsahoval vlakno, kde bezi listen(). Bez toho je to neresitelne. PHP neni urceno pro vytvareni serveru, ale klienta ;-) Kazdopadne je to trosku zcestny napad ...
> Zjistis IP pozadavku (to jde bez problemu)
Jak? Snad ne pres $REMOTE_ADDR? Rekneme, ze aplikace bezi na serveru 10.0.0.4. Ja jakozto uzivatel ji spoustim ze sveho pocitace (10.0.0.90) a v prubehu skriptu se pripoji pres socket nekdo z IP 192.168.10.10 (treba). V jakym okamziku bych mel tedy odchytit $REMOTE_ADDR, aby mi to nevratilo 10.0.0.90, ale hledanych 192.168.10.10? Nebo IP zjistim jinak?
> a tu IP strcis do socket_create().
Spis do socket_connect(), ne? Create vypada porad stejne, ne?
socket_create(AF_INET, SOCK_STREAM, 0)