php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #27065 stream_socket_server won't listen on udp sockets
Submitted: 2004-01-27 15:53 UTC Modified: 2004-01-28 15:47 UTC
Votes:3
Avg. Score:4.0 ± 0.8
Reproduced:3 of 3 (100.0%)
Same Version:1 (33.3%)
Same OS:1 (33.3%)
From: glox at glox dot be Assigned:
Status: Closed Package: Documentation problem
PHP Version: 5CVS-2004-01-27 (dev) OS: freeBSD 5.1
Private report: No CVE-ID: None
 [2004-01-27 15:53 UTC] glox at glox dot be
Description:
------------
When trying to listen on a udp socket in freebsd with php5, php fails to create the socket and returns unknown error.

The manual page gives an example about a udp server, however this returns the same error.

Operating system (uname -a):

FreeBSD 5.1-RELEASE #0: Thu Jun  5 02:55:42 GMT 2003     root@wv1u.btc.adaptec.com:/usr/obj/usr/src/sys/GENERIC

PHP version (php -v):

PHP 5.0.0RC1-dev (cli) (built: Jan 16 2004 22:47:26)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.0-dev, Copyright (c) 1998-2004 Zend Technologies

PHP configure line:
./configure --with-mysql=/usr/local/mysql --with-mime-magic --with-apxs=/usr/local/sbin/apxs --enable-wddx --with-zlib --enable-bcmath --with-bz2 --with-ncurses --enable-cli --disable-cgi --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-calender --enable-pcntl --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-exif --enable-sockets --with-xpm-dir --with-gettext --with-gmp --enable-mbstring --with-xmlrpc --with-xsl --with-ex --enable-openssl

Reproduce code:
---------------
<?php
$sock = stream_socket_server('udp://0.0.0.0:27961');
?>

Expected result:
----------------
No output

Actual result:
--------------
Warning: stream_socket_server(): unable to connect to udp://0.0.0.0:27961 (Unknown error) in /share/wolfd/serv.php on line 2


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-01-27 15:57 UTC] glox at glox dot be
The port is open, and I run this script as root

root@glox /share/wolfd# sockstat | grep 27961
root@glox /share/wolfd#

root@glox /share/wolfd# whoami
root
root@glox /share/wolfd#
 [2004-01-27 16:02 UTC] otoria at freecode dot nl
Same problem: 
 
michiel@-bash-serenity ~$ uname -a 
Linux serenity 2.4.20 #2 Mon Mar 17 22:02:15 PST 2003 i686 
unknown 
michiel@-bash-serenity ~$ php -v 
PHP 5.0.0RC1-dev (cli) (built: Jan 26 2004 16:41:55) 
Copyright (c) 1997-2004 The PHP Group 
Zend Engine v2.0.0-dev, Copyright (c) 1998-2004 Zend 
Technologies 
michiel@-bash-serenity ~$
 [2004-01-27 21:29 UTC] iliaa@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip

Seems to work for me. 
 [2004-01-27 23:27 UTC] pollita@php.net
udp:// sockets should not attempt to listen().  Because stream_socket_server() uses both the bind and listen flags by default you need to explicitly set them to bind only.

I've fixed the example to reflect this.
 [2004-01-28 13:06 UTC] glox at glox dot be
Isn't it better to let php define those flags then, based on the socket type (udp/tcp).

I don't see any change in the example either ...
 [2004-01-28 15:47 UTC] pollita@php.net
It'd be nice, but because of the way the transports layer operates it won't happen without making exceptions on a per protocol basis and that's gernerally not a good idea.

As to the documentation, the source has been updated, but the online manual is only rebuilt from source on a periodic basis.

The change amounts to:

$server = stream_socket_server('udp://0.0.0.0:13/', $errno, $errstr, STREAM_SERVER_BIND);
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Oct 17 13:01:27 2024 UTC