php socket通信(tcp/udp)實(shí)例分析
本文實(shí)例講述了php socket通信(tcp/udp)方法。分享給大家供大家參考,具體如下:
注意
1.在socket_bind的時(shí)候ip地址不能真回環(huán)地址如127.0.0.1
2.server.php后臺(tái)跑起來(lái)的時(shí)候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);
?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php socket用法總結(jié)》、《PHP基本語(yǔ)法入門教程》、《PHP錯(cuò)誤與異常處理方法總結(jié)》及《php常用函數(shù)與技巧總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP error_log()將錯(cuò)誤信息寫入一個(gè)文件(定義和用法)
PHP error_log()定義和用法,帶有二個(gè)簡(jiǎn)單小例子加函數(shù)解釋2013-10-10
PHP 如何獲取二維數(shù)組中某個(gè)key的集合
PHP 獲取二維數(shù)組中某個(gè)key的集合2014-06-06
使用php數(shù)據(jù)緩存技術(shù)提高執(zhí)行效率
使用php緩存技術(shù)時(shí)為了提高效率。在大量的并發(fā)訪問面前,獲取數(shù)據(jù)可能成為效率的瓶頸,PHP實(shí)際開發(fā)之中針對(duì)數(shù)據(jù)處理進(jìn)行緩存。2022-12-12
PHP讀取網(wǎng)頁(yè)文件內(nèi)容的實(shí)現(xiàn)代碼(fopen,curl等)
php小偷程序中經(jīng)常需要獲取遠(yuǎn)程網(wǎng)頁(yè)的內(nèi)容,下面是一些實(shí)現(xiàn)代碼,需要的朋友可以慘況下。2011-06-06
php實(shí)現(xiàn)用已經(jīng)過去多長(zhǎng)時(shí)間的方式顯示時(shí)間
這篇文章主要介紹了php實(shí)現(xiàn)用已經(jīng)過去多長(zhǎng)時(shí)間的方式顯示時(shí)間,可實(shí)現(xiàn)相對(duì)時(shí)間的顯示效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-06-06
PHP 向右側(cè)拉菜單實(shí)現(xiàn)代碼,測(cè)試使用中
PHP 向右側(cè)拉菜單實(shí)現(xiàn)代碼,測(cè)試使用中,需要的朋友可以測(cè)試下。2009-11-11
使用PHP會(huì)話(Session)實(shí)現(xiàn)用戶登陸功能
本篇文章是對(duì)PHP會(huì)話(Session)實(shí)現(xiàn)用戶登陸功能進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

