【问题标题】:tcp server working fine but udp server showing error in phptcp 服务器工作正常,但 udp 服务器在 php 中显示错误
【发布时间】:2013-02-14 20:31:04
【问题描述】:

这是php代码

    <?php

$hostname = "127.0.0.1";
$portno = "5060";

$sock = socket_create(AF_INET, SOCK_STREAM, 0) or die("Socket create error\n");
socket_bind($sock, $hostname, $portno) or die("Socket bind error\n");
socket_listen($sock, 3) or die("Could not set up socket listener\n");

while(1)
{
    echo "socket connection started\n";
    $accept = socket_accept($sock) or die("Could not accept incoming connection\n");
    while($recv = socket_read($accept, 24000))
    {
        $sent = socket_write($sock, $recv, strlen($recv));
        echo $recv;
    }
    socket_close($accept);
    echo "socket connection done\n";
}

socket_close($sock);
?>

它作为 TCP 服务器工作。为了将其转换为 udp 服务器,我在创建服务器时修改了一行

$sock = socket_create(AF_INET, SOCK_DGRAM, 0) or die("Socket create error\n");

但它显示错误

Could not set up socket listener

在尝试聆听时。

【问题讨论】:

  • 哪个错误?检查端口是否已经忙于嵌套 -na

标签: php tcp udp port


【解决方案1】:

你不需要 socket_listen()。

使用socket_recvfrom()

http://php.net/manual/en/function.socket-recvfrom.php

【讨论】:

    【解决方案2】:

    我不相信socket_listen 可以与 UDP 一起使用。来自manual

    socket_listen() 仅适用于 SOCK_STREAM 或 SOCK_SEQPACKET 类型的套接字。

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多