需要一个UDP客户端示例

蒂姆·赫尔佐格(Tim Herzog)

我有一个Sail Timer风向标,它通过风向标硬件创建的WiFi网络通过UDP传输数据。系统运行正常,我可以通过第三方INavX导航软件读取数据但是我希望能够直接通过PHP读取UDP流以进行测试,并且无法运行我的脚本。我没有使用UDP的经验。

我知道硬件和网络可以正常工作,因为上述软件可以正常工作。另外,我可以看到Wireshark中的网络流量。我曾尝试向供应商寻求帮助,但他们说他们正在逐步淘汰我的模型,他们不会用我拥有的模型来帮助我,我应该购买一个新的模型。但是写导航软件的人说,这是一个简单的网络连接,没有启动字符串或任何东西,“只要连接到端口,您就应该看到数据。”

这使得它与我所看到的其他UDP示例有所不同的地方是,它本质上是“仅监听”(这是什么广播?)。如果我尝试将数据写入套接字,则会收到“权限被拒绝”错误,这就是为什么我要在socket_recvfrom函数中指定ip和端口。

这是我在PHP中的客户端代码:

<?php

# based on from http://www.binarytides.com/udp-socket-programming-in-php/

/*
    Simple php udp socket client
*/

//Reduce errors
error_reporting(~E_WARNING);

// network settings for the wind vane
$server = '255.255.255.255';
$port = 55554;
if( isset($argv[1]) ) $server = $argv[1];
if( isset($argv[2]) ) $port   = $argv[2];

if(!($sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Couldn't create socket: [$errorcode] $errormsg \n");
}



echo "Socket created \n";

// Bind the source address
if( !socket_bind($sock, "127.0.0.1" , 55554) )
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Could not bind socket : [$errorcode] $errormsg \n");
}


//Communication loop
while(1)
{

    //Now receive reply from server and print it
    if( ($bytesRead = socket_recvfrom ( $sock , $reply , 2045 , 0 , $server, $port )) === FALSE)
    {
        $errorcode = socket_last_error();
        $errormsg = socket_strerror($errorcode);

    if( ! in_array($errorcode, array(35) ) )
      die("Could not receive data: [$errorcode] $errormsg \n");
    }

    if( $bytesRead > 0 ) {
      echo "Reply : $reply";
    }
    usleep(500000);
}
用户名

试试看:

//Create socket.
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if (!$socket) { die("socket_create failed.\n"); }

//Set socket options.
socket_set_nonblock($socket);
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
if (defined('SO_REUSEPORT'))
    socket_set_option($socket, SOL_SOCKET, SO_REUSEPORT, 1);

//Bind to any address & port 55554.
if(!socket_bind($socket, '0.0.0.0', 55554))
    die("socket_bind failed.\n");

//Wait for data.
$read = array($socket); $write = NULL; $except = NULL;
while(socket_select($read, $write, $except, NULL)) {

    //Read received packets with a maximum size of 5120 bytes.
    while(is_string($data = socket_read($socket, 5120))) {
        echo $data;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要一个UDP客户端示例

来自分类Dev

UDP回显服务器,每个客户端一个线程

来自分类Dev

将UDP数据包发送到2个客户端,只有一个接收

来自分类Dev

NFS:与除一个客户端外的所有客户端共享

来自分类Dev

客户端如何了解另一个客户端是否已连接

来自分类Dev

从另一个客户端控制Spotify

来自分类Dev

创建一个Skype Web客户端

来自分类Dev

Netty客户端仅使用一个线程

来自分类Dev

一个对等对象处理多个客户端

来自分类Dev

只为一个接口配置 openvpn 客户端

来自分类Dev

客户端是否需要一个天蓝色帐户才能请求天蓝色存储资源?

来自分类Dev

需要mimo icap netty实现客户端示例代码

来自分类Dev

当另一个客户端加入时,客户端的Socket.send不能正常工作

来自分类Dev

当只有一个客户端发出时,为每个客户端发出 Socket.IO

来自分类Dev

使用DatagramPacket将数据从一个客户端发送到另一个客户端

来自分类Dev

Socket.IO仅发出给一个客户端,而不发出给另一个客户端

来自分类Dev

如何通过SignalR从一个客户端向另一个客户端发送javascript对象

来自分类Dev

一个Rsync客户端耗时超过10个小时

来自分类Dev

Socket.io 两个客户端仅在一个方向上通信

来自分类Dev

带有Oracle的EntityFramework 6:是否有一个“独立的” ODAC(即没有ODBC),是否每个客户端PC都需要安装它?

来自分类Dev

如何设计一个不需要客户端发出许多请求来获取所需数据的 REST API?

来自分类Dev

服务器多线程一次仅回答一个客户端

来自分类Dev

keycloak从一个新领域和一些客户端配置开始

来自分类Dev

一次仅从一个客户端执行PHP方法

来自分类Dev

服务器多线程一次仅回答一个客户端

来自分类Dev

自定义客户端验证,用于至少一个数组中的验证

来自分类Dev

Google Oauth错误:应至少设置一个客户端机密(已安装或网络)

来自分类Dev

LetsEncrypt-ACMESharp客户端处于待命状态的挑战超过一个小时

来自分类Dev

如何注册一个oauth2客户端?

Related 相关文章

  1. 1

    需要一个UDP客户端示例

  2. 2

    UDP回显服务器,每个客户端一个线程

  3. 3

    将UDP数据包发送到2个客户端,只有一个接收

  4. 4

    NFS:与除一个客户端外的所有客户端共享

  5. 5

    客户端如何了解另一个客户端是否已连接

  6. 6

    从另一个客户端控制Spotify

  7. 7

    创建一个Skype Web客户端

  8. 8

    Netty客户端仅使用一个线程

  9. 9

    一个对等对象处理多个客户端

  10. 10

    只为一个接口配置 openvpn 客户端

  11. 11

    客户端是否需要一个天蓝色帐户才能请求天蓝色存储资源?

  12. 12

    需要mimo icap netty实现客户端示例代码

  13. 13

    当另一个客户端加入时,客户端的Socket.send不能正常工作

  14. 14

    当只有一个客户端发出时,为每个客户端发出 Socket.IO

  15. 15

    使用DatagramPacket将数据从一个客户端发送到另一个客户端

  16. 16

    Socket.IO仅发出给一个客户端,而不发出给另一个客户端

  17. 17

    如何通过SignalR从一个客户端向另一个客户端发送javascript对象

  18. 18

    一个Rsync客户端耗时超过10个小时

  19. 19

    Socket.io 两个客户端仅在一个方向上通信

  20. 20

    带有Oracle的EntityFramework 6:是否有一个“独立的” ODAC(即没有ODBC),是否每个客户端PC都需要安装它?

  21. 21

    如何设计一个不需要客户端发出许多请求来获取所需数据的 REST API?

  22. 22

    服务器多线程一次仅回答一个客户端

  23. 23

    keycloak从一个新领域和一些客户端配置开始

  24. 24

    一次仅从一个客户端执行PHP方法

  25. 25

    服务器多线程一次仅回答一个客户端

  26. 26

    自定义客户端验证,用于至少一个数组中的验证

  27. 27

    Google Oauth错误:应至少设置一个客户端机密(已安装或网络)

  28. 28

    LetsEncrypt-ACMESharp客户端处于待命状态的挑战超过一个小时

  29. 29

    如何注册一个oauth2客户端?

热门标签

归档