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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: teemu dot tormanen at funmedia dot fi
New email:
PHP Version: OS:

 

 [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

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-01-04 16:11 UTC] edink@php.net
Duplicate of #21197
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed Jan 15 12:01:29 2025 UTC