By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,521 Members | 1,447 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,521 IT Pros & Developers. It's quick & easy.

A question about UDP packet receive

P: n/a
Hi, everyone.
I need your help!
I created a UDP server by using $socket =
stream_socket_server($udpAddr, $errno, $errstr, STREAM_SERVER_BIND);
the client send me a reqest, then server return a "hello string".
but the client simply send me a name or something very short. I have
to read upto 100 chars, then the fread can return.

my Question is: how can I read a udp packet which length is unknow?

thank a lot!
Reeze.


my src code:=====================================
$pkt = stream_socket_recvfrom($socket, 100, 0, $peer);

$reciv_data = fread($socket, 100);
$message = preg_replace("/[[:space:]]/", '', $reciv_data); // cleanup
data
$response = "hello, $message";
stream_socket_sendto($socket, $response, 0, $peer);

echo " In [$message] \n";
echo " Out [$response] \n";
Oct 30 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Reeze wrote:
I have to read upto 100 chars, then the fread can return.

my Question is: how can I read a udp packet which length is unknow?
Guess what: fread() returns when it has read as many characters as
requested, OR when it hits an end-of-file.

And, guess what: when the server closes the connection, that is interpreted
as an end-of-file.

You should be able to work out the solution with this info. Alternatively,
RTFM: http://php.net/stream_get_contents

Cheers,
--
----------------------------------
Iván Sánchez Ortega -ivan-algarroba-sanchezortega-punto-es-

You fill a much-needed gap.

Oct 30 '08 #2

P: n/a
Reeze <re*******@gmail.comwrote:
>
I need your help!
I created a UDP server by using $socket =
stream_socket_server($udpAddr, $errno, $errstr, STREAM_SERVER_BIND);
the client send me a reqest, then server return a "hello string".
but the client simply send me a name or something very short. I have
to read upto 100 chars, then the fread can return.

my Question is: how can I read a udp packet which length is unknow?
...
my src code:=====================================
$pkt = stream_socket_recvfrom($socket, 100, 0, $peer);

$reciv_data = fread($socket, 100);
$message = preg_replace("/[[:space:]]/", '', $reciv_data); // cleanup
data
$response = "hello, $message";
stream_socket_sendto($socket, $response, 0, $peer);

echo " In [$message] \n";
echo " Out [$response] \n";
I suggest that you use EITHER stream_socket_recvfrom OR fread. Both serve
the same purpose in this case, but fread adds another level of buffering.
It doesn't sound like you really want the buffering.
--
Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc.
Oct 31 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.