/** * Connects the TCP socket to the host with the given IP address and port * number * * Depending on whether PHP's sockets extension is loaded, this uses either * <var>socket_create</var>/<var>socket_connect</var> or * <var>fsockopen</var>. * * @param string $ipAddress The IP address to connect to * @param int $portNumber The TCP port to connect to * @param int $timeout The timeout in milliseconds * @throws SocketException if an error occurs during connecting the socket */ public function connect($ipAddress, $portNumber, $timeout) { $this->ipAddress = $ipAddress; $this->portNumber = $portNumber; if ($this->socketsEnabled) { if (!($this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { throw new SocketException(socket_last_error($this->socket)); } socket_set_nonblock($this->socket); @socket_connect($this->socket, $ipAddress, $portNumber); $write = array($this->socket); $read = $except = array(); $sec = floor($timeout / 1000); $usec = $timeout % 1000; if (!socket_select($read, $write, $except, $sec, $usec)) { $errorCode = socket_last_error($this->socket); } else { $errorCode = socket_get_option($this->socket, SOL_SOCKET, SO_ERROR); } if ($errorCode) { throw new SocketException($errorCode); } socket_set_block($this->socket); } else { if (!($this->socket = @fsockopen("tcp://{$ipAddress}", $portNumber, $socketErrno, $socketErrstr, $timeout / 1000))) { throw new SocketException($socketErrstr); } stream_set_blocking($this->socket, true); } }
function send_data($_remote_ip, $_remote_port, $_message) { if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $_remote_ip)) { // echo 'IP ist gültig.'; } else { $_remote_ip = gethostbyname($_remote_ip); } if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Couldn't create socket: [{$errorcode}] {$errormsg} \n"); $log_update = mysql_query("INSERT INTO `log`(`message`) VALUES ('" . $errormsg . "')"); } echo "Socket created \n"; //Connect socket to remote server if (!socket_connect($sock, $_remote_ip, $_remote_port)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not connect: [{$errorcode}] {$errormsg} \n"); $log_update = mysql_query("INSERT INTO `log`(`message`) VALUES ('" . $errormsg . "')"); } echo "Connection established \n"; //Send the message to the server if (!socket_send($sock, $_message, strlen($_message), 0)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not send data: [{$errorcode}] {$errormsg} \n"); $log_update = mysql_query("INSERT INTO `log`(`message`) VALUES ('" . $errormsg . "')"); } echo "Message send successfully \n"; //$log_update = mysql_query("INSERT INTO `log`(`message`) VALUES ('".$_remote_ip."')"); }
function processPacket($packetData) { $packet = new dhcpPacket(); $packet->parse($packetData); $processor = new dhcpRequestProcessor($this, $this->packetProcessor, $this->storage, $packet); if ($responsePacket = $processor->getResponse()) { $responseData = $responsePacket->build(); $this->verbosity && (print "Sending response" . "\n"); $ciaddr = $packet->getClientAddress(); if ($ciaddr == '0.0.0.0') { $this->verbosity && (print "Switching to broadcast address...\n"); $ciaddr = '255.255.255.255'; } $this->verbosity && (print "Attempting to send response packet to " . $ciaddr . "\n"); $numBytesSent = socket_sendto($this->socket, $responseData, strlen($responseData), 0, $ciaddr, 68); if ($numBytesSent === FALSE) { $this->verbosity && (print "send failed for specific address, broadcast.\n"); $numBytesSent = socket_sendto($this->socket, $responseData, strlen($responseData), 0, "255.255.255.255", 68); $numBytesSent === FALSE && $this->verbosity && printf('socket send error: %s\\n', socket_strerror(socket_last_error($this->socket))); } $numBytesSent && $this->verbosity && (print "Response packet sent.\n"); } else { $this->verbosity && (print "Packet ignored\n"); } }
function getsock($port) { $socket = null; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false || $socket === null) { $error = socket_strerror(socket_last_error()); $msg = "socket create({$port}) failed"; echo "ERR: {$msg} '{$error}'\n"; return NULL; } socket_set_nonblock($socket); $res = socket_connect($socket, API_HOST, $port); $timeout = 50; while ($res === false && $timeout > 0) { $err = socket_last_error($socket); echo "."; if ($timeout > 1 && ($err == 115 || $err == 114)) { $timeout--; usleep(50); $res = socket_connect($socket, API_HOST, $port); continue; } $error = socket_strerror($err); $msg = "socket connect({$port}) failed"; echo "ERR: {$msg} '{$error}'\n"; socket_close($socket); return NULL; } socket_set_block($socket); return $socket; }
function sendsock($in) { global $config; $service_port = $config['sockport']; $address = $config['sockhost']; if (!function_exists("socket_create")) { error_log(date("y-m-d H:i:s") . " 未启用socket模块\n", 3, "error.log"); return null; } $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { error_log(date("y-m-d H:i:s") . "socket_create() failed, reason: " . socket_strerror(socket_last_error()) . "\n", 3, "error.log"); return null; } $result = socket_connect($socket, $address, $service_port); if ($result === false) { error_log(date("y-m-d H:i:s") . "socket_connect() failed.\nReason: ({$result}) " . socket_strerror(socket_last_error($socket)) . "\n", 3, "error.log"); return null; } socket_write($socket, $in, strlen($in)); $result = socket_read($socket, 8192); $arr = unpack("C*", $result); socket_close($socket); return $arr; }
public function socketClose() { $this->sock_error = socket_strerror(socket_last_error($this->fsock)); socket_clear_error(); @socket_close($this->fsock); return $this; }
function WakeOnLan($addr, $mac_address, $socket_number) { $addr_byte = explode(':', $mac_address); $hw_addr = ''; for ($a = 0; $a < 6; $a++) { $hw_addr .= chr(hexdec($addr_byte[$a])); $msg = chr(255) . chr(255) . chr(255) . chr(255) . chr(255) . chr(255); for ($a = 1; $a <= 16; $a++) { $msg .= $hw_addr; // send it to the broadcast address using UDP // SQL_BROADCAST option isn't help!! $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); if ($s == false) { echo "Error creating socket!\n"; echo "Error code is '" . socket_last_error($s) . "' - " . socket_strerror(socket_last_error($s)); return FALSE; } else { // setting a broadcast option to socket: $opt_ret = socket_set_option($s, 1, 6, TRUE); if ($opt_ret < 0) { echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n"; return FALSE; } if (socket_sendto($s, $msg, strlen($msg), 0, $ip_address, $socket_number)) { echo "Magic Packet sent successfully!"; socket_close($s); return TRUE; } else { echo "Magic packet failed!"; return FALSE; } } } } }
function sendcmd($in, $address, $service_port) { /* Create a TCP/IP socket. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { return "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } $result = socket_connect($socket, $address, $service_port); if ($result === false) { return "socket_connect() failed.\nReason: ({$result}) " . socket_strerror(socket_last_error($socket)) . "\n"; } socket_write($socket, $in, strlen($in)); $mess = ""; /*$next = "";*/ sleep(1); /*$next = socket_read($socket, 4096);*/ while (0 != socket_recv($socket, $out, 4096, MSG_DONTWAIT)) { if ($out != null) { $mess .= $out; } } /*$mess .= $next;*/ socket_close($socket); return $mess; }
private function mainLoop() { $changed_sockets = $this->allsockets; @socket_select($changed_sockets, $write = null, $exceptions = null, 0); foreach ($this->apps as $app) { $app->onTick(); } foreach ($changed_sockets as $socket) { if ($socket == $this->master) { if (($rec = socket_accept($this->master)) < 0) { $this->log("Error: Could not connect\n" . socket_strerror(socket_last_error($rec))); continue; } else { $this->log("New client connecting..."); $client = new Connection($this, $rec); $this->clients[$rec] = $client; $this->allsockets[] = $rec; } } else { $client = $this->clients[$socket]; $bytes = @socket_recv($socket, $data, 4096, 0); if (!$bytes) { $client->onDisconnect(); unset($this->clients[$socket]); $index = array_search($socket, $this->allsockets); unset($this->allsockets[$index]); unset($client); } else { $client->onData($data); } } } }
function queryAPI($jsonQuery) { $service_port = 12345; $address = "localhost"; $msg = "{\n \"array\": [\n"; echo $msg; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { die('{"type" : "error", "msg" : "connection error: ' . socket_strerror(socket_last_error()) . '"}]}'); } $result = socket_connect($socket, $address, $service_port); if ($result === false) { die('{"type" : "error", "msg" : "connection error: ' . socket_strerror(socket_last_error($socket)) . '"}]}'); } $in = stripslashes($jsonQuery); socket_write($socket, $in, strlen($in)); socket_write($socket, ';', 1); $buffer = ""; while ($out = socket_read($socket, 2048)) { echo $out; ob_flush(); flush(); } #JSON Array end $msg = "]\n }"; echo $msg; echo PHP_EOL; ob_flush(); flush(); socket_close($socket); }
function create_connection($host, $port) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!is_resource($socket)) { echo 'Unable to create socket: ' . socket_strerror(socket_last_error()) . PHP_EOL; } else { echo "Socket created.\n"; } if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) { echo 'Unable to set option on socket: ' . socket_strerror(socket_last_error()) . PHP_EOL; } else { echo "Set options on socket.\n"; } if (!socket_bind($socket, $host, $port)) { echo 'Unable to bind socket: ' . socket_strerror(socket_last_error()) . PHP_EOL; } else { echo "Socket bound to port {$port}.\n"; } if (!socket_listen($socket, SOMAXCONN)) { echo 'Unable to listen on socket: ' . socket_strerror(socket_last_error()); } else { echo "Listening on the socket.\n"; } while (true) { $connection = @socket_accept($socket); if ($connection) { echo "Client {$connection} connected!\n"; send_data($connection); } else { echo "Bad connection."; } } }
function execute_script($scriptid, $hostid) { $res = 1; $command = script_make_command($scriptid, $hostid); $nodeid = id2nodeid($hostid); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!$socket) { $res = 0; } if ($res) { global $ZBX_SERVER, $ZBX_SERVER_PORT; $res = socket_connect($socket, $ZBX_SERVER, $ZBX_SERVER_PORT); } if ($res) { $send = "Command{$nodeid}{$hostid}{$command}\n"; socket_write($socket, $send); } if ($res) { $res = socket_read($socket, 65535); } if ($res) { list($flag, $msg) = split("", $res); $message["flag"] = $flag; $message["message"] = $msg; } else { $message["flag"] = -1; $message["message"] = S_CONNECT_TO_SERVER_ERROR . ' [' . $ZBX_SERVER . ':' . $ZBX_SERVER_PORT . '] [' . socket_strerror(socket_last_error()) . ']'; } if ($socket) { socket_close($socket); } return $message; }
/** * Initiates a connection on the socket * * @param string $host * @param integer $port * @return void * @throws SocketException */ public function connect($host, $port) { if (!@socket_connect($this->socket, $host, $port)) { $error = socket_strerror(socket_last_error()); throw new SocketException($error); } }
/** * the main loop for the client we handle I/O operations */ public function loop() { $tmp = TRUE; // read from socket $input = @socket_read($this->socket, 1024000); if ($input !== FALSE) { if (!empty($input)) { // if there are multiple messages in one "packet" if (substr_count($input, '\\final\\') > 1) { $ex = explode('\\final\\', $input); foreach ($ex as $item) { if (trim($item) !== '') { if ($this->commands($item . '\\final\\') === FALSE) { $tmp = FALSE; } } } } else { $tmp = $this->commands($input); } return $tmp; } } if (socket_last_error($this->socket) > 0) { return FALSE; } return TRUE; }
private static function _tcp_send_request($socket_write_json = null) { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (false === $sock) { echo "sock create error!\n"; } $address = Config::get("kgi.kgi_mid_server_ip"); $port = Config::get("kgi.kgi_mid_server_port"); try { $result = socket_connect($sock, $address, $port); if ($result === false) { echo "socket_connect() failed.\nReason: ({$result}) " . socket_strerror(socket_last_error($sock)) . "\n"; exit; die; } socket_write($sock, $socket_write_json, strlen($socket_write_json)); while ($out_str = socket_read($sock, 2048)) { // echo "revice result\n"; // echo $out_str . "\n"; $json_data = json_decode($out_str); break; } socket_close($sock); } catch (\ErrorException $e) { //echo $e->getMessage() . "\n"; } }
protected function _checkClosedRequests() { foreach ($this->_clients as $key => $client) { if (in_array($client, $this->_read)) { $buf = @socket_read($client, 1024, PHP_NORMAL_READ); if ($buf === false) { throw new Exception\Listener(socket_strerror(socket_last_error($client))); } $buf = trim($buf); if ($buf) { switch ($buf) { case 'quit': print "Close connection\n"; unset($this->_clients[$key]); $this->_requests[$key]->finished = true; unset($this->_requests[$key]); socket_close($client); break; case 'shutdown': throw new Exception\Listener('Shutdown detected'); } } } } return true; }
function coop_send($message) { if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Couldn't create socket: [{$errorcode}] {$errormsg} \n"); } //Connect socket to remote server if (!socket_connect($sock, COOPSERVER, COOPPORT)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not connect: [{$errorcode}] {$errormsg} \n"); } //Send the message to the server if (!socket_send($sock, $message, strlen($message), 0)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not send data: [{$errorcode}] {$errormsg} \n"); } $buf = 'my buffer'; if (false !== ($bytes = socket_recv($sock, $buf, 1024, 0))) { echo "Read {$bytes} bytes of socket_recv(). close socket ..."; } else { echo "socket_recv() error; Reason: " . socket_strerror(socket_last_error($socket)) . "\n"; } socket_close($sock); return $buf; }
private function await() { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($sock < 0) { echo "Error:" . socket_strerror(socket_last_error()) . "\n"; } $ret = socket_bind($sock, $this->ip, $this->port); if (!$ret) { echo "BIND FAILED:" . socket_strerror(socket_last_error()) . "\n"; exit; } echo "OK\n"; $ret = socket_listen($sock); if ($ret < 0) { echo "LISTEN FAILED:" . socket_strerror(socket_last_error()) . "\n"; } do { $new_sock = null; try { $new_sock = socket_accept($sock); } catch (Exception $e) { echo $e->getMessage(); echo "ACCEPT FAILED:" . socket_strerror(socket_last_error()) . "\n"; } try { $request_string = socket_read($new_sock, 1024); $response = $this->output($request_string); socket_write($new_sock, $response); socket_close($new_sock); } catch (Exception $e) { echo $e->getMessage(); echo "READ FAILED:" . socket_strerror(socket_last_error()) . "\n"; } } while (TRUE); }
function refresh_user($discord_id) { global $socket, $error; $so = socket_create(AF_UNIX, SOCK_DGRAM, 0); if ($so === false) { $msg = socket_strerror(socket_last_error()); $error = "Socket failed: {$msg}"; } else { $res = socket_connect($so, $socket); if ($res === false) { $msg = socket_strerror(socket_last_error()); $error = "Connect failed: {$msg}"; } else { $payload = json_encode(array('action' => 'refresh', 'user_id' => $discord_id)); $res = socket_write($so, $payload); if ($res === false) { $error = "Socket send failed"; } else { if ($res < strlen($payload)) { $error = "Socket did not send all data"; } } socket_shutdown($so); socket_close($so); } } }
/** * @param resource $socket * @return string */ protected function getSocketError($socket = null) { if ($socket === null && $this->socket) { $socket = $this->socket; } return socket_strerror(socket_last_error($socket)); }
/** * 发送数据 * @param string $data * @return bool | int */ function send($data) { $length = strlen($data); $written = 0; $t1 = microtime(true); //总超时,for循环中计时 while ($written < $length) { $n = socket_send($this->sock, substr($data, $written), $length - $written, null); //超过总时间 if (microtime(true) > $this->timeout_send + $t1) { return false; } if ($n === false) { $errno = socket_last_error($this->sock); //判断错误信息,EAGAIN EINTR,重写一次 if ($errno == 11 or $errno == 4) { continue; } else { return false; } } $written += $n; } return $written; }
function SendMail($email, $subject, $text) { $address = 'mail.iptm.ru'; // адрес smtp-сервера $port = 25; // порт (стандартный smtp - 25) // $from = '=?utf-8?b?' . base64_encode('Конференция «Рентгеновская оптика»') . '?= <*****@*****.**>'; // адрес отправителя $from = '*****@*****.**'; // адрес отправителя try { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // Создаем сокет if ($socket < 0) { throw new Exception('socket_create() failed: ' . socket_strerror(socket_last_error()) . "\n"); } $result = socket_connect($socket, $address, $port); // Соединяем сокет к серверу if ($result === false) { throw new Exception('socket_connect() failed: ' . socket_strerror(socket_last_error()) . "\n"); } read_smtp_answer($socket); // Читаем информацию о сервере write_smtp_response($socket, 'EHLO ' . $_SERVER['SERVER_NAME']); // Приветствуем сервер read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'MAIL FROM:<' . $from . '> BODY=8BITMIME'); // Задаем адрес отправителя read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'RCPT TO:<' . $email . '>'); // Задаем адрес получателя read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'DATA'); // Готовим сервер к приему данных read_smtp_answer($socket); // ответ сервера $header = "From: " . $from . "\r\n"; $header .= "To: " . $email . "\r\n"; $header .= "Subject: =?utf-8?b?" . base64_encode($subject) . "?=\r\n"; $header .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Mime-Version: 1.0\r\n"; $text = $header . base64_encode($text); write_smtp_response($socket, $text . "\r\n."); // Отправляем данные read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'QUIT'); // Отсоединяемся от сервера read_smtp_answer($socket); // ответ сервера } catch (Exception $e) { echo "\nError: " . $e->getMessage(); } if (isset($socket)) { socket_close($socket); } }
protected function handleRequest($conn) { socket_set_block($conn); $request = ''; $bytes = socket_recv($conn, $request, 16384, 0); if ($bytes === false) { L::level(L::DEBUG) && L::log(L::DEBUG, __CLASS__, "Problem reading from socket: %s", array(socket_last_error($conn))); return; } $request = explode("\n", $request); $get_line = explode(' ', $request[0]); if (preg_match('#^/nowplaying\\.json(?:\\?.*|$)#', $get_line[1])) { $data = array(); if (isset($this->most_recent_track)) { $track = $this->most_recent_track; $data = array('artist' => $track->getArtist(), 'title' => $track->getTitle(), 'album' => $track->getAlbum(), 'length' => $track->getLengthInSeconds()); } $body = json_encode($data); $len = strlen($body); $lines = array('HTTP/1.0 200 OK', 'Date: ' . date('r'), 'Content-Type: application/json', 'Content-Length: ' . $len, 'Server: ScratchLive! Scrobbler', 'Connection: close', '', $body); socket_write($conn, implode("\n", $lines)); socket_close($conn); L::level(L::DEBUG) && L::log(L::DEBUG, __CLASS__, "Finished handling request.", array()); } else { $body = '<html><head><title>404 Not Found</title></head><body>No Dice.</body></html>'; $len = strlen($body); $lines = array('HTTP/1.0 404 Not Found', 'Date: ' . date('r'), 'Content-Type: text/html', 'Content-Length: ' . $len, 'Server: ScratchLive! Scrobbler', 'Connection: close', '', $body); socket_write($conn, implode("\n", $lines)); socket_close($conn); L::level(L::DEBUG) && L::log(L::DEBUG, __CLASS__, "Handled unknown request.", array()); } }
function call($command, $parameters = array(), $user = false) { if (empty($this->user) || empty($this->pass)) { return false; } if ($user == false) { $cmd = array($this->user, $this->pass); } else { $cmd = array($user, $this->user . ':' . $this->pass); } array_push($cmd, $command); array_push($cmd, $parameters); $this->write($this->itype->fromphp($cmd)); $response = $this->read(); if ($response === false) { Error::warn('Connection failure', array('Could not read from server', socket_strerror(socket_last_error()))); return false; } $parsedResponse = $this->itype->parse($response); if ($parsedResponse[0] == 'empty') { Error::warn('Connection failure', array('Could not parse data delivered by server', $line)); return false; } $response = $this->itype->flat($parsedResponse); if (is_a($response, 'itype_exception')) { $response = $response->getCode(); } return $response; }
public function connect() { $this->socketCon = socket_connect($this->socketVar, $this->ip, $this->port); if (!$this->socketCon) { die("Cannot Connnect: Exiting With Exception : " . socket_strerror(socket_last_error()) . PHP_EOL); } }
/** * Connects the TCP socket to the host with the given IP address and port number */ public function connect(InetAddress $ipAddress, $portNumber) { $this->ipAddress = $ipAddress; $this->portNumber = $portNumber; if ($this->socketsEnabled) { if (!($this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { $errorCode = socket_last_error($this->socket); throw new Exception("Could not create socket: " . socket_strerror($errorCode)); } if (@(!socket_connect($this->socket, $ipAddress, $portNumber))) { $errorCode = socket_last_error($this->socket); throw new Exception("Could not connect socket: " . socket_strerror($errorCode)); } if ($this->isBlocking) { socket_set_block($this->socket); } else { socket_set_nonblock($this->socket); } } else { if (!($this->socket = fsockopen("tcp://{$ipAddress}", $portNumber, $socketErrno, $socketErrstr, 2))) { throw new Exception("Could not create socket."); } stream_set_blocking($this->socket, $this->isBlocking); } }
public function __construct(Server $server, $password, $port = 19132, $interface = "0.0.0.0", $threads = 1, $clientsPerThread = 50) { $this->server = $server; $this->workers = []; $this->password = (string) $password; $this->server->getLogger()->info("Starting remote control listener"); if ($this->password === "") { $this->server->getLogger()->critical("RCON can't be started: Empty password"); return; } $this->threads = (int) max(1, $threads); $this->clientsPerThread = (int) max(1, $clientsPerThread); $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($this->socket === false or !socket_bind($this->socket, $interface, (int) $port) or !socket_listen($this->socket)) { $this->server->getLogger()->critical("RCON can't be started: " . socket_strerror(socket_last_error())); $this->threads = 0; return; } socket_set_block($this->socket); for ($n = 0; $n < $this->threads; ++$n) { $this->workers[$n] = new RCONInstance($this->socket, $this->password, $this->clientsPerThread); } socket_getsockname($this->socket, $addr, $port); $this->server->getLogger()->info("RCON running on {$addr}:{$port}"); }
function print_sock_err($sock, $type) { $errno = socket_last_error($sock); $errmsg = socket_strerror($errno); echo "{$type} ERROR:{$errno} - {$errmsg}" . PHP_EOL; socket_close($sock); }
function getsock($addr, $port) { $socket = null; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false || $socket === null) { $error = socket_strerror(socket_last_error()); $msg = "socket create(TCP) failed"; echo "ERR: {$msg} '{$error}'\n"; return null; } $res = socket_connect($socket, $addr, $port); if ($res === false) { $error = socket_strerror(socket_last_error()); $msg = '<center class="alert alert-danger bs-alert-old-docs">CGMiner is not running...If it is not restart after minutes ,please try to reboot.</center>'; socket_close($socket); echo $msg; @exec('sudo service cgminer stop '); @exec('sudo service cgminer stop '); @exec('sudo service cgminer stop '); $network = get_network(); $gateway = $network['gateway_id']; @exec('sudo route add default gw ' . $gateway); //sleep(3); //@exec('sudo service cgminer start &'); //showmsg($msg,'?c=home&m=reboot','10000'); //echo "ERR: $msg '$error'\n"; //exit; return null; } return $socket; }
public function start() { self::$_logger->info('Server starts.'); // Init a non-blocking TCP socket for listening $this->_sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!$this->_sock) { $errno = socket_last_error(); $errstr = socket_strerror($errno); self::$_logger->err("Socket create error: {$errstr} ({$errno})"); die; } socket_set_nonblock($this->_sock); if (!socket_bind($this->_sock, $this->_addr, $this->_port)) { $errno = socket_last_error(); $errstr = socket_strerror($errno); self::$_logger->err("Socket bind error: {$errstr} ({$errno})"); die; } if (!socket_listen($this->_sock, $this->_listenQueue)) { $errno = socket_last_error(); $errstr = socket_strerror($errno); self::$_logger->err("Socket listen error: {$errstr} ({$errno})"); die; } // For the listening socket, we use raw event to handle it. $this->_listenEvent = event_new(); event_set($this->_listenEvent, $this->_sock, EV_READ | EV_PERSIST, array($this, 'handleAcceptEvent')); event_base_set($this->_listenEvent, $this->_eventBase); event_add($this->_listenEvent); // Endless loop $this->_started = TRUE; event_base_loop($this->_eventBase); // The loop ends here. $this->stop(); }