| Recommend this page to a friend! | 
| Info | Documentation | Reputation | Support forum | Blog | Links | 
| Ratings | Unique User Downloads | Download Rankings | ||||
| Not yet rated by the users | Total: 166 | All time:  8,899 This week: 80 | ||||
| Version | License | PHP version | Categories | |||
| stream7 1.0.6 | MIT/X Consortium ... | 5 | Networking, PHP 5, Stream wrappers, PSR | 
| Description | Author  | |
This package is PSR 7 based network connection client and server.  | 
__Server__
ob_end_clean();
header("Connection: keep-alive");
ignore_user_abort(); // optional
ob_start();
echo ('Server Listening ....');
ob_end_flush(); // Strange behaviour, will not work
flush();
$connect = function()
{
    // Create TCP Server And Bind On Port #8000
    $socket = new StreamServer('tcp://0.0.0.0:8000');
    $socket->bind();
    return $socket;
};
/ @var StreamServer $socketServer */
$socketServer = $connect();
while (1)
{
    try {
        // Listen On Port Till Client Connect ...
        $streamable = $socketServer->listen();
    } catch (TimeoutException $e) {
        // If Connection Timeout Connect Again, and listen
        $socketServer->shutdown();     // free server port
        $socketServer = $connect();    // connect again ..
        continue;
    }
    ob_start();
    echo '<br/><br/>'."Client Connected: "
        .(
            $streamable->getResource()
                ->getRemoteName()
        );
    ob_end_flush();flush();
    // While Client Not Closed Connection ...
    $response = '';
    while ($streamable->getResource()->isAlive())
    {
        $clientMessage = $streamable->readLine();
        ob_start();
        switch ($clientMessage) {
            case 'bye':
                echo '<br/>'."> bye "
                    .(
                    $streamable->getResource()
                        ->getRemoteName()
                    );
                // send back response
                $streamable->write($response);
                // close client connection
                $streamable->getResource()->close();
                break;
            case 'time':
                echo '<br/> >'.$clientMessage;
                $response .= date("D M j H:i:s Y\r\n");
                break;
            default:
                echo '<br/>'.'>'.$clientMessage. ', Not Recognized.';
        }
        ob_end_flush();flush();
    }
}
__Client__
$socks  = new StreamClient('tcp://127.0.0.1:8000');
try {
    $resrc = $socks->getConnect();
} catch (\Exception $e) {
    throw new \Exception('Not Connected.', null, $e);
}
$clientStream = new Streamable($resrc);
echo $clientStream->getResource()->getLocalName();
$clientStream->sendData("time\n");
$clientStream->sendData("not known command\n");
$clientStream->sendData("bye\n");
// Get Back Response
echo $clientStream->read();
| File | Role | Description | ||
|---|---|---|---|---|
| Data | Auxiliary data | |||
| Lic. | License text | |||
| Doc. | Documentation | |||
| Class | Class source | |||
| Class | Class source | |||
| Class | Class source | |||
| Class | Class source | |||
| Class | Class source | |||
| / | Context | 
| File | Role | Description | ||
|---|---|---|---|---|
|    | 
Class | Class source | ||
|    | 
Aux. | Auxiliary script | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
| / | Filter | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Interfaces | 
| File | Role | Description | ||
|---|---|---|---|---|
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
| / | Interfaces | / | Filter | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Interfaces | / | Resource | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Interfaces | / | Wrapper | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Psr | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Resource | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Streamable | 
| File | Role | Description | ||
|---|---|---|---|---|
|    | 
Aux. | Auxiliary script | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
| / | Streamable | / | AggregateStreams | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
| / | Wrapper | 
| File | Role | Description | ||
|---|---|---|---|---|
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
|    | 
Class | Class source | ||
| / | Wrapper | / | FileAccessControl | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
|    | 
Class | Class source | 
| / | Wrapper | / | PsrToPhpResource | 
| File | Role | Description | 
|---|---|---|
|    | 
Class | Class source | 
| The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page. | 
| Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
| 100% | 
  | 
  | 
| Applications that use this package | 
 If you know an application of this package, send a message to the author to add a link here.