php udp发送和接收_PHP中udp或tcp请求数据

本文介绍了在PHP中使用UDP进行通信的方法,包括如何向UDP发送数据以获取返回值,以及如何直接接收UDP数据。通过示例代码展示了如何设置超时选项和进行socket操作,帮助理解PHP中UDP通信的实现过程。
摘要由CSDN通过智能技术生成

PHP中使用tcp或者udp请求数据,分为两种

1:需要向udp发送数据才能获取到返回值的/**

*$service_port 端口号

*$address 服务器地址

*$in 发送的参数

**/

public function Send_socket_xdcoder_udp($service_port, $address, $in)

{

// 采用php socket技术使用UDP协议连接设备

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array(

"sec" => 2,

"usec" => 0

));

// 发送命令

@socket_sendto($socket, $in, strlen($in), 0, $address, $service_port);

@socket_recvfrom($socket, $buffer, 1024, 0, $address, $service_port);

// 关闭连接

socket_close($socket);

if (! empty($buffer)) {

return $buffer;

} else {

echo "fail";

}

}

2:udp直接就是吐数据不需要发请求

#设置超时不起作用不知道什么情况/**

*$service_port 端口号

*$address 服务器地址

**/

public function getUdp($service_port, $address)

{

//服务器信息

//如果是tcp 直接写tcp

$server = "udp://$address:$service_port";

//消息结束符号

$msg_eof = "\n";

$socket = stream_socket_server($server, $errno, $errstr, STREAM_SERVER_BIND);

if (!$socket) {

die("$errstr ($errno)");

}

$inMsg = stream_socket_recvfrom($socket, 1024, 0, $peer);

fclose($socket);

return $inMsg;

}

socket请求设置请求超时/**

* Created by PhpStorm.

* function: Get_socket_xdcoder_udp

* Description: 获取udp数据

* User: Xiaoxie

* @param $service_port

* @param $address

* @return mixed

*

*/

public function Get_socket_xdcoder_udp($service_port, $address)

{

$socket = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);

socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array(

"sec" => 1,

"usec" => 0

));

$ok = @socket_bind($socket,$address,$service_port);

if ( $ok === false ) {

echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) );

}

$from = '';

$cport = 0;

@socket_recvfrom($socket, $buffer, 1024,0, $from, $cport);

// echo $from;

return $buffer;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值