php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #21409 PHP_NORMAL_READ parameter in socket_read function gives error
Submitted: 2003-01-04 11:11 UTC Modified: 2003-01-04 16:11 UTC
From: teemu dot tormanen at funmedia dot fi Assigned:
Status: Not a bug Package: Sockets related
PHP Version: 4.3.0 OS: Windows 2000
Private report: No CVE-ID: None
 [2003-01-04 11:11 UTC] teemu dot tormanen at funmedia dot fi
<?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 = '190.23.198.28';
$port = 10000;

if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 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;
		}
		
		/*
		while(($tmpbuf = socket_read($msgsock, 512)) !== false) {
 			$buf .= $tmpbuf;
			if(preg_match("'\r\n\r\n$'s", $buf))
				break;
		}
		*/
		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);
?>

this socket example script dies when ran from command line.
but only if i use PHP_NORMAL_READ parameter in socket_read function. it gives this error:
PHP Warning:  socket_read() unable to read from socket [0]: The operation comple
ted successfully.
 in C:\php43\serv.php on line 38
socket_read() failed: reason: Incorrect function.
if PHP_NORMAL_READ parameter isn't used, it works beautifully.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-01-04 16:11 UTC] edink@php.net
Duplicate of #21197
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Mon Feb 24 12:01:25 2020 UTC