http://nl.php.net/socketsquote:#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$address = '192.168.1.53';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
quote:Op vrijdag 18 juni 2004 16:35 schreef rihago het volgende:
ik heb zoiets wel eens geschreven in PHP...
php kan namelijk ook heel goed met sockets overweg
Zou lief zijnquote:Op vrijdag 18 juni 2004 16:35 schreef rihago het volgende:
(ff linkie zoeken van voorbeeld)
netcat! Weliswaar geen echt shell-commando, maar wel een heel handige commandline tool.quote:Op vrijdag 18 juni 2004 16:36 schreef Arjan het volgende:
Volgens mij zijn er geen shell-commando's voor sockets.
Je komt dan al snel in de hoek van shell-executie van Perl-scripts (of command-line PHP).
quote:#!/usr/bin/php4 -q
<?php
error_reporting(E_ALL);
set_time_limit(0);
$address = '127.0.0.1';
$port = 110;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
$msg="-ERR Dios, mijn mailserver is op dit moment in onderhoud\n";
socket_write($msgsock, $msg, strlen($msg));
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
Tnxquote:Op vrijdag 18 juni 2004 17:07 schreef Hiawatha het volgende:
Hee QG. Ik heb een leuk zelfgemaakt progje voor je waarmee je dat kan doen. Zal het zo effe op m'n website zetten: http://projects.leisink.org/ Je moet het progje Jampot hebben.
xinetd is een prima idee, maar het is zelfs nog makkelijker dan jij zegt. Als je een script of programma via xinetd (of standaard inetd) laat starten worden stdin en stdout van je prog geredirect naar de socket. Je script komt dan dus neer op "echo text"quote:Op vrijdag 18 juni 2004 16:42 schreef RiDo78 het volgende:
Ohh als dat alles is...
Je kunt met xinetd definieëren welk programma er gestart moet worden als er een verbinding op een willekeurige poort binnenkomt. Je zult dan alleen je shell-script zo gek moeten krijgen dat ie dan ook contact maakt met die poort zodra het gestart wordt... of je neemt 'finger' onder handen. Dan heb je weinig shellscript (ervaring) nodig.
Kijk... weer wat geleerd ;-)quote:Op vrijdag 18 juni 2004 17:16 schreef NightWhistler het volgende:
[..]
xinetd is een prima idee, maar het is zelfs nog makkelijker dan jij zegt. Als je een script of programma via xinetd (of standaard inetd) laat starten worden stdin en stdout van je prog geredirect naar de socket. Je script komt dan dus neer op "echo text"
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |