Sockets

Tags:    php

<< < 12 > >>

Jeg er i gang med at kigge på sockets i php. Før jeg går i gang med et nyt emne af denne art så finder jeg altid et script og afprøver det sådan!!

Det script jeg har fundet er:

<?

// set some variables
$host = "127.0.0.1";
$port = 12;

// don't timeout!
set_time_limit(0);

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\\n");

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\\n");

// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\\n");

// clean up input string
$input = trim($input);

// reverse client input and send back
$output = strrev($input) . "\\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
output\\n");

// close sockets
socket_close($spawn);
socket_close($socket);
?>

Jeg starter scriptet på min bærbar computer via en MS browser. Derefter loader den bare i en uendelighed men det tager jeg som om at scriptet virker! Nu går jeg ud til en anden computer starter telnet og opretter en forbindelse til 127.0.0.1 på port 12 men den siger at den ikke kan oprette en forbindelse til distinations computeren da den aktivt benægter forbindelsen.
Hvad skal jeg gøre? Jeg har et antivirus program til at køre men den stopper da ikke alle portene? Hvis det lykkes mig at oprette en forbindelse hvordan kan jeg så se at jeg har fået forbindelse? Får jeg noget tekst smækket i hovedet at jeg har oprettet en forbindelse? Eller hva?

MxS @ http://mxs.frac.dk
Slamkodning for fred



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Det virker fint hos mig, men serveren siger ikke så meget. Den sender bare strengen tilbage omvendt og lukker forbindelsen. Her er en version som gør lidt mere:
Fold kodeboks ind/udKode 


Her kører serveren:
Fold kodeboks ind/udKode 

Og her er hvad jeg kørte fra telnet:
Fold kodeboks ind/udKode 




Jeg er i gang med at kigge på sockets i php.


Jeg ved det er lidt et sidespor, men er der nogen der kan forklare nærmere, hvad "sockets i PHP" er??

På forhånd tak.

Med venlig hilsen
Jesper Holm
www.b-web.dk



Jeg er i gang med at kigge på sockets i php.

Jeg ved det er lidt et sidespor, men er der nogen der kan forklare nærmere, hvad "sockets i PHP" er??

På forhånd tak.

Med venlig hilsen
Jesper Holm
www.b-web.dk


Hehe det er sådan at man kan lave fx en server eller andet smart. Med sockets kan du fx selv åbne en port på en ip og komunikerer via den med fx en telnet klient. Du kan også oprette en forbindelse til en server. Der er meget mere. Det her er kun en overfladisk beskrivelse, men gå på devshed.com der har de ihvertfald en artikel om det!! Det er den jeg læser og den er faktisk meget god!

MxS @ http://mxs.frac.dk
Slamkodning for fred




Nu går jeg ud til en anden computer starter telnet og opretter en forbindelse til 127.0.0.1 på port 12 men den siger at den ikke kan oprette en forbindelse til distinations computeren da den aktivt benægter forbindelsen.

Hehe.....127.0.0.1 er en loopback IP adresse. Det betyder at du forbinder til den computer du sidder ved. Hvis scriptet kører på en anden computer er det selvfølgelig denne IP du skal bruge.
Når du binder til 127.0.0.1 betyder det at du KUN kan forbinde fra samme computer. brug i stedet socket_bind($socket, 0, $port). Så binder du til alle adresser og kan forbinde alle steder fra. Find computerens IP med 'ipconfig'.



Fik du det til at virke ??



Fik du det til at virke ??


Nej det gjorde jeg ikke. Jeg har gjort det du har forslået (Gjorde det også et par gange før) Men efter at jeg har loadet det script i en browser og går ud til en anden computer og connecter til telnet så står markøren bare og blinker og når jeg trykker enter så slutter den med kommentaren "ingen forbindelse til værten"!
Jeg ved ikke om jeg har oprettet en forbindelse fordi når jeg trykker på enter på den anden computer og får meddelsen så loader den anden computer, som jeg kører scriptet fra, færdig!! (Lige når jeg starter scriptet og ind til jeg forbinder og trykker enter så står den og bliver ved med at loade) Så det kan vel betyde at jeg har oprettet en forbindelse??

Men jeg tænkte på om jeg på en måde kan se om jeg har oprettet en forbindelse ved evt. at få scriptet til at svare fx. "Du er logget på" eller andet? Eller at jeg lige frem kan se når jeg har oprettet en forbindelse?

Håber du forstod den lange forklaring:)

MxS @ http://mxs.frac.dk
Slamkodning for fred



Nu har jeg prøvet at køre den fra min egen maskine ved at kalde den via telnet localhost 5555, men den gider ikke sige noget. Altså jeg har en antivirusprogarm som kører i baggrunden men den lukker da ikke porte osv vel? Har ingen firewall!!

Når jeg har startet scriptet op via explorer og begynder at lave den der telnet så står markøren bare og blinker og når jeg trykker enter siger den "Ingen forbindelse til værten" Og ser jeg så derefter på min explorer siger det godt nok at det har fået en connection med det er fra en localhost ip 127.0.0.1 men porten er 1099 og ikke 5555. Synes jeg er lidt mærkeligt!!



Nu har jeg prøvet at køre den fra min egen maskine ved at kalde den via telnet localhost 5555, men den gider ikke sige noget. Altså jeg har en antivirusprogarm som kører i baggrunden men den lukker da ikke porte osv vel? Har ingen firewall!!

Når jeg har startet scriptet op via explorer og begynder at lave den der telnet så står markøren bare og blinker og når jeg trykker enter siger den "Ingen forbindelse til værten" Og ser jeg så derefter på min explorer siger det godt nok at det har fået en connection med det er fra en localhost ip 127.0.0.1 men porten er 1099 og ikke 5555. Synes jeg er lidt mærkeligt!!

Det er porten som der forbindes fra og den tildeles dynamisk og tilfældigt. Alt er som det skal være. Windows telnet virker lidt underligt (måske uden ekko). Prøv at skrive noget, du kan måske ikke se hvad du skriver, og tryk <return>.



Nu har jeg prøvet at køre den fra min egen maskine ved at kalde den via telnet localhost 5555, men den gider ikke sige noget. Altså jeg har en antivirusprogarm som kører i baggrunden men den lukker da ikke porte osv vel? Har ingen firewall!!

Når jeg har startet scriptet op via explorer og begynder at lave den der telnet så står markøren bare og blinker og når jeg trykker enter siger den "Ingen forbindelse til værten" Og ser jeg så derefter på min explorer siger det godt nok at det har fået en connection med det er fra en localhost ip 127.0.0.1 men porten er 1099 og ikke 5555. Synes jeg er lidt mærkeligt!!
Det er porten som der forbindes fra og den tildeles dynamisk og tilfældigt. Alt er som det skal være. Windows telnet virker lidt underligt (måske uden ekko). Prøv at skrive noget, du kan måske ikke se hvad du skriver, og tryk <return>.


Hvis jeg telnetter den så blinker markøren som sagt, men lige så snart jeg prøver at skrive noget springer nogle linjer ned og skriver "Ingen forbindelse til værten"!!

MxS @ http://mxs.frac.dk
Slamkodning for fred



Jeg tror, at jeg ved, hvad der er galt nu. Windows telnet sender hvert tastaturtryk for sig selv. Det betyder, at så snart du trykker en tast, bliver den sendt og læst af serveren, som derefter lukker forbindelsen.
Du kan løse problement ved at bruge Putty telnet klienten. Den kan downloades fra http://www.chiark.greenend.org.uk/~sgtatham/putty/
Åben den, udfyld "Host Name (or IP address) feltet, sæt kryds i "Telnet" og skriv
porten. Skift derefter til "Connection->Telnet" vinduet og sæt kryds i "Passive" under "Telnet negotiation mode" og tryk på "Open".



<< < 12 > >>
t