怎样使用php实现tcpudp通讯

怎样使用php实现tcpudp通讯,第1张

1.在socket_bind的时候ip地址不能真回环地址如乎银祥127.0.0.1

2.server.php后台跑起来岁搏的时候nohup php server.php >/var/tmp/a.log 2>&1 &

一: udp 方式

1) server.php

<?php //error_reporting( E_ALL ) set_time_limit( 0 ) ob_implicit_flush() $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ) if ( $socket === false ) {echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n" } $ok = socket_bind( $socket, '202.85.218.133', 11109 ) if ( $ok === false ) {echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) ) } while ( true ) {$from = "" $port = 0 socket_recvfrom( $socket, $buf,1024, 0, $from, $port ) echo $buf usleep( 1000 ) } ?>

2) client.php

<?php $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) $msg = 'hello' $len = strlen($msg) socket_sendto($sock, $msg, $len, 0, '202.85.218.133', 11109) socket_close($sock) ?>

二: TCP 方式

1)server.php

<?php //error_reporting( E_ALL ) set_time_limit( 0 ) ob_implicit_flush() $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ) socket_bind( $socket, '192.168.2.143', 11109 ) socket_listen($socket) $acpt=socket_accept($socket) echo "Acpt!\n" while ( $acpt ) {$words=fgets(STDIN) socket_write($acpt,$words) $hear=socket_read($acpt,1024) echo $hear if("bye\搏闭r\n"==$hear){ socket_shutdown($acpt) break }usleep( 1000 ) } socket_close($socket) ?>

2) client.php

<?php $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) $con=socket_connect($socket,'192.168.2.143',11109) if(!$con){socket_close($socket)exit} echo "Link\n" while($con){ $hear=socket_read($socket,1024) echo $hear $words=fgets(STDIN) socket_write($socket,$words) if($words=="bye\r\n"){break} } socket_shutdown($socket) socket_close($sock) ?>

设备发送数据的程序编写人协调,在发送的数据前面添加汪卜耐一个标识设备ID的内容,这样接收数据后从数据判断设备号,而不是通过IP和PORT。

例如约定用两位数表示设备ID,那么设备01发送的数弊塌据是AAAAA修改为发送01AAAAA,收到数据后识别01为设备号,困春后面的AAAAA作为数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12349664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存