php socket通信(tcp/udp)实例分析


Posted in PHP onFebruary 14, 2016

本文实例讲述了php socket通信(tcp/udp)方法。分享给大家供大家参考,具体如下:

注意

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);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
cakephp打印sql语句的方法
Feb 13 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
php 流程控制switch的简单实例
Jun 07 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP7新功能总结
Apr 14 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 #PHP
php中的常用魔术方法汇总
Feb 14 #PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 #PHP
PHP浮点比较大小的方法
Feb 14 #PHP
PHP魔术方法使用方法汇总
Feb 14 #PHP
PHP函数超时处理方法
Feb 14 #PHP
PHP使用file_get_content设置头信息的方法
Feb 14 #PHP
You might like
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python threading模块操作多线程介绍
2015/04/08 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
使用python实现rsa算法代码
2016/02/17 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
python多线程并发实例及其优化
2019/06/27 Python
Python实现某论坛自动签到功能
2019/08/20 Python
flask实现验证码并验证功能
2019/12/05 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
思想汇报范文
2013/11/04 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
新闻稿件写作范文
2015/07/18 职场文书
2016年学校招生广告语
2016/01/28 职场文书
《月光曲》教学反思
2016/02/16 职场文书