<?php
$address = '127.0.0.1';
$port = 1337;
$sock = socketInit($address, $port);
do {
break;
}
socketWrite($msgsock, "Welcome\r\n\r\n");
do {
$buf = '';
foreach (readSocket($msgsock) as $buffer) {
$buf .= $buffer;
}
if ($buf == "") {
break;
}
socketWrite($msgsock, $buf);
} while(true);
} while (true);
function socketWrite($msgsock, $buffer) {
if ($bytesSent == $length) {
echo "all bytes have been sent \n";
break;
} else {
$buffer = substr($buffer, $bytesSent); }
}
if ($bytesSent === false) {
}
}
function socketInit($address, $port) {
if (($sock = socket_create(AF_INET
, SOCK_STREAM
, SOL_TCP
)) === false) { }
}
}
return $sock;
}
function readSocket($msgsock) {
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ
))) { break;
}
$buf = trim($buf);echo "\r\n buffer: $buf \r\n";
if ($buf == "") {
break;
}
yield $buf;
break;
}
} while (true);
}
PD9waHAKZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKIAokYWRkcmVzcyA9ICcxMjcuMC4wLjEnOwokcG9ydCA9IDEzMzc7Cgokc29jayA9IHNvY2tldEluaXQoJGFkZHJlc3MsICRwb3J0KTsKIApkbyB7CglpZiAoKCRtc2dzb2NrID0gc29ja2V0X2FjY2VwdCgkc29jaykpID09PSBmYWxzZSkgewoJCWVjaG8gItCd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRi9C/0L7Qu9C90LjRgtGMIHNvY2tldF9hY2NlcHQoKTog0L/RgNC40YfQuNC90LA6ICIgLiBzb2NrZXRfc3RyZXJyb3Ioc29ja2V0X2xhc3RfZXJyb3IoJHNvY2spKSAuICJcbiI7CiAgICAgICAgYnJlYWs7Cgl9CiAKCXNvY2tldFdyaXRlKCRtc2dzb2NrLCAiV2VsY29tZVxyXG5cclxuIik7CgoJZG8gewoJCSRidWYgPSAnJzsKCQkKCQlmb3JlYWNoIChyZWFkU29ja2V0KCRtc2dzb2NrKSBhcyAkYnVmZmVyKSB7CgkJCSRidWYgLj0gJGJ1ZmZlcjsKCQl9CgoJCWlmICgkYnVmID09ICIiKSB7CgkJCWJyZWFrOwoJCX0KCgkJc29ja2V0V3JpdGUoJG1zZ3NvY2ssICRidWYpOwoJfSB3aGlsZSh0cnVlKTsKCQoKCXNvY2tldF9jbG9zZSgkbXNnc29jayk7Cn0gd2hpbGUgKHRydWUpOwogCnNvY2tldF9jbG9zZSgkc29jayk7CiAKZnVuY3Rpb24gc29ja2V0V3JpdGUoJG1zZ3NvY2ssICRidWZmZXIpIHsKCSRsZW5ndGggPSBzdHJsZW4oJGJ1ZmZlcik7CiAKCXdoaWxlICgkYnl0ZXNTZW50ID0gc29ja2V0X3dyaXRlKCRtc2dzb2NrLCAkYnVmZmVyKSkgewoJCWlmICgkYnl0ZXNTZW50ID09ICRsZW5ndGgpIHsKCQkJZWNobyAiYWxsIGJ5dGVzIGhhdmUgYmVlbiBzZW50IFxuIjsKCQkJYnJlYWs7CgkJfSBlbHNlIHsKCQkJJGJ1ZmZlciA9IHN1YnN0cigkYnVmZmVyLCAkYnl0ZXNTZW50KTsKCQl9Cgl9CiAKCWlmICgkYnl0ZXNTZW50ID09PSBmYWxzZSkgewoJCWVjaG8gItCd0LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNC/0LjRgdCw0YLRjCDQtNCw0L3QvdGL0LUg0LIg0YHQvtC60LXRgiwg0L/RgNC40YfQuNC90LA6IiAuIHNvY2tldF9zdHJlcnJvcihzb2NrZXRfbGFzdF9lcnJvcigpKTsKCQlzb2NrZXRfY2xvc2UoJG1zZ3NvY2spOwoJfQp9CgpmdW5jdGlvbiBzb2NrZXRJbml0KCRhZGRyZXNzLCAkcG9ydCkgewoJaWYgKCgkc29jayA9IHNvY2tldF9jcmVhdGUoQUZfSU5FVCwgU09DS19TVFJFQU0sIFNPTF9UQ1ApKSA9PT0gZmFsc2UpIHsKCQllY2hvICLQndC1INGD0LTQsNC70L7RgdGMINGB0L7Qt9C00LDRgtGMINGB0L7QutC10YIsINC/0YDQuNGH0LjQvdCwOiAiIC4gc29ja2V0X3N0cmVycm9yKHNvY2tldF9sYXN0X2Vycm9yKCkpIC4gIlxuIjsKCQlkaWU7Cgl9CgoJaWYgKHNvY2tldF9iaW5kKCRzb2NrLCAkYWRkcmVzcywgJHBvcnQpID09PSBmYWxzZSkgewoJCWVjaG8gItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L/RgNC40LLRj9C30LDRgtGMINGB0L7QutC10YIg0Log0LDQtNGA0YDQtdGB0YMsINC/0YDQuNGH0LjQvdCwOiAiIC4gc29ja2V0X3N0cmVycm9yKHNvY2tldF9sYXN0X2Vycm9yKCkpIC4gIlxuIjsKCQlkaWU7Cgl9CgoJaWYgKHNvY2tldF9saXN0ZW4oJHNvY2ssIDUpID09PSBmYWxzZSkgewoJCWVjaG8gItCd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRi9C/0L7Qu9C90LjRgtGMIHNvY2tldF9saXN0ZW4oKTog0L/RgNC40YfQuNC90LA6ICIgLiBzb2NrZXRfc3RyZXJyb3Ioc29ja2V0X2xhc3RfZXJyb3IoJHNvY2spKSAuICJcbiI7CgkJZGllOwoJfQoKCXJldHVybiAkc29jazsKfQoKZnVuY3Rpb24gcmVhZFNvY2tldCgkbXNnc29jaykgewoJZG8gewoJCWlmIChmYWxzZSA9PT0gKCRidWYgPSBzb2NrZXRfcmVhZCgkbXNnc29jaywgMjA0OCwgUEhQX05PUk1BTF9SRUFEKSkpIHsKCQkJZWNobyAi0L3QtSDRg9C00LDQu9C+0YHRjCDQv9GA0L7Rh9C40YLQsNGC0Ywg0YHQvtC60LXRgiwg0L/RgNC40YfQuNC90LA6ICIgLiBzb2NrZXRfc3RyZXJyb3Ioc29ja2V0X2xhc3RfZXJyb3IoJG1zZ3NvY2spKTsKCQkJYnJlYWs7CgkJfQogCgkJJGJ1ZiA9IHRyaW0oJGJ1Zik7ZWNobyAiXHJcbiBidWZmZXI6ICRidWYgXHJcbiI7CiAKCQlpZiAoJGJ1ZiA9PSAiIikgewoJCQlicmVhazsKCQl9CgoJCXlpZWxkICRidWY7CgoJCWlmIChwcmVnX21hdGNoKCcvXG4vJywgJGJ1ZikpIHsKCQkJYnJlYWs7CgkJfQoKCX0gd2hpbGUgKHRydWUpOwp9