php socket通信(tcp/udp)實例分析
本文實例講述了php socket通信(tcp/udp)方法。分享給大家供大家參考,具體如下:
注意
1.在socket_bind的時候ip地址不能真回環(huán)地址如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);
?>
更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php socket用法總結》、《PHP基本語法入門教程》、《PHP錯誤與異常處理方法總結》及《php常用函數(shù)與技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
PHP獲取當前日期所在星期(月份)的開始日期與結束日期(實現(xiàn)代碼)
本篇文章是對PHP獲取當前日期所在星期(月份)的開始日期與結束日期的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php監(jiān)測數(shù)據(jù)是否成功插入到Mysql數(shù)據(jù)庫的方法
在PHP中該怎么用代碼判斷數(shù)據(jù)是否成功插入到Mysql數(shù)據(jù)庫?這篇文章中給出了兩種解決的方法,大家可以根據(jù)需要選擇相對應的方法,有需要的朋友們下面來跟著小編一起學習學習吧。2016-11-11
使用PHP實現(xiàn)RESTful API的常見問題與解決方案
RESTful API是一種基于HTTP協(xié)議的架構風格,廣泛應用于現(xiàn)代Web服務和移動應用開發(fā)中,但在開發(fā)過程中開發(fā)者可能會遇到一些常見問題,下面小編為大家提供一下相應問題的解決方案吧2025-03-03
php調(diào)用Google translate_tts api實現(xiàn)代碼
以下是對php調(diào)用Google translate_tts api的實現(xiàn)代碼進行了分析介紹,需要的朋友可以過來參考下2013-08-08
header函數(shù)設置響應頭解決php跨域問題實例詳解
在本篇文章里小編給大家整理的是關于header函數(shù)設置響應頭解決php跨域問題實例內(nèi)容,有需要的朋友們可以參考下。2020-01-01
php+jQuery ajax實現(xiàn)的實時刷新顯示數(shù)據(jù)功能示例
這篇文章主要介紹了php+jQuery ajax實現(xiàn)的實時刷新顯示數(shù)據(jù)功能,結合實例形式分析了php結合jQuery ajax實時刷新讀取顯示數(shù)據(jù)庫數(shù)據(jù)相關操作技巧,需要的朋友可以參考下2019-09-09

