推荐实例:PHP socket

深入浅出讲解:php的socket通信

基于socket.io的实时消息推送

php socket通信(tcp/udp)

PHP向socket服务器收发数据

php实现socket

PHP socket

环境:windows

PHP在WIN下操作socket最好用命令行运行程序,至于为什么,自己可以体会下。

首先运行php + 程序的路径,出现了这个提示表示你的php没有加入环境变量path下面。

然后找到你的php安装目录,我的是这个

然后复制上面的路径,右键点击我的电脑-属性-高级-环境变量,添加到环境变量中,注意有个;号,看下图

然后确定,保存。再次运行cmd,OK成功了。不会出现那个提示了。

接下来就是主题了,先放代码

  1. <?php
    //确保在连接客户端时不会超时
    set_time_limit(0);
  2.  
  3. $ip = '127.0.0.1';
    $port = 1935;
  4.  
  5. /*
    +-------------------------------
    * @socket通信整个过程
    +-------------------------------
    * @socket_create
    * @socket_bind
    * @socket_listen
    * @socket_accept
    * @socket_read
    * @socket_write
    * @socket_close
    +--------------------------------
    */
  6.  
  7. /*---------------- 以下操作都是手册上的 -------------------*/
    if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";
    }
  8.  
  9. if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";
    }
  10.  
  11. if(($ret = socket_listen($sock,4)) < 0) {
    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";
    }
  12.  
  13. $count = 0;
  14.  
  15. do {
    if (($msgsock = socket_accept($sock)) < 0) {
    echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
    break;
    } else {
  16.  
  17. //发到客户端
    $msg ="测试成功!\n";
    socket_write($msgsock, $msg, strlen($msg));
  18.  
  19. echo "测试成功了啊\n";
    $buf = socket_read($msgsock,8192);
  20.  
  21. $talkback = "收到的信息:$buf\n";
    echo $talkback;
  22.  
  23. if(++$count >= 5){
    break;
    };
  24.  
  25. }
    //echo $buf;
    socket_close($msgsock);
  26.  
  27. } while (true);
  28.  
  29. socket_close($sock);
    ?>

这是socket的服务端代码。然后运行cmd,注意是自己的程序存放路径啊。

没有反映,对现在服务端的程序已经开始运行,端口已经开始监听了。运行netstat -ano可以查看端口情况,我的是1935端口

看,端口已经处于LISTENING状态了。接下来我们只要运行客户端程序即可连接上。上代码

  1. <?php
    error_reporting(E_ALL);
    set_time_limit(0);
    echo "<h2>TCP/IP Connection</h2>\n";
  2.  
  3. $port = 1935;
    $ip = "127.0.0.1";
  4.  
  5. /*
    +-------------------------------
    * @socket连接整个过程
    +-------------------------------
    * @socket_create
    * @socket_connect
    * @socket_write
    * @socket_read
    * @socket_close
    +--------------------------------
    */
  6.  
  7. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    }else {
    echo "OK.\n";
    }
  8.  
  9. echo "试图连接 '$ip' 端口 '$port'...\n";
    $result = socket_connect($socket, $ip, $port);
    if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
    }else {
    echo "连接OK\n";
    }
  10.  
  11. $in = "Ho\r\n";
    $in .= "first blood\r\n";
    $out = '';
  12.  
  13. if(!socket_write($socket, $in, strlen($in))) {
    echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
    }else {
    echo "发送到服务器信息成功!\n";
    echo "发送的内容为:<font color='red'>$in</font> <br>";
    }
  14.  
  15. while($out = socket_read($socket, 8192)) {
    echo "接收服务器回传信息成功!\n";
    echo "接受的内容为:",$out;
    }
  16.  
  17. echo "关闭SOCKET...\n";
    socket_close($socket);
    echo "关闭OK\n";
    ?>

至此客户端已经连接上服务端了。这只是个小例子,很多东西知道原理其他就好做了。

php tcp socket 学习汇总的更多相关文章

  1. tcp socket学习

    更新一波学的socket编程,socket还是比较重要的,探测端口,连接服务底层都是socket编程.tcp有server 和 client.client和udp发送差不多. server端是建立了两 ...

  2. MINA学习汇总

    MINA学习汇总 Apache Mina Server 是一个网络通信应用框架,用于开发高性能和高可用性的网络应用程序.它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(然,也可以提供JAVA ...

  3. 再次回首 TCP Socket服务器编程

    转载:http://www.cnblogs.com/zc22/archive/2010/06/27/1766007.html ------------------ 前言 --------------- ...

  4. 经过一年时间的沉淀 再次回首 TCP Socket服务器编程--转

    ------------------ 前言 ------------------ 开发了这么多年,发现最困难的程序开发就是通讯系统. 其他大部分系统,例如CRM/CMS/权限框架/MIS之类的,无论怎 ...

  5. C# Socket学习笔记二

    小记:昨天咱们已经了解了Socket的通信原理,可是点对点的一次通信并不是我们想要的,那么今天那我们就继续学习异步通信,简单来说就是服务器端和客户端可以进行多次 互发信息的通信而不用担心通道会关闭.在 ...

  6. C# Socket学习笔记一

    小记:刚接触网络编程觉得网络是个神奇的东西,所以对它就很有兴趣,想了解下网络是如何进行进行数据传输的,那么开始第一天的学习吧!ReadyGo!!! 首先我们要了解一下几点内容: 1.网络中进程之间如何 ...

  7. Socket学习总结系列(二) -- CocoaAsyncSocket

    这是系列的第二篇 这是这个系列文章的第二篇,要是没有看第一篇的还是建议看看第一篇,以为这个是接着第一篇梳理的 先大概的总结一下在上篇的文章中说的些内容: 1. 整理了一下做IM我们有那些途径,以及我们 ...

  8. QT创建TCP Socket通信

    最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO.为了测试是否能与VS2012下的程序进行通信,在VS2012下建立一个客户端程序,进行通信测试,发现可以 ...

  9. TCP Socket通信详细过程

    下面这篇文章是参考"骏马金龙"博客中 不可不知的socket和TCP连接过程 https://www.cnblogs.com/f-ck-need-u/p/7623252.html ...

随机推荐

  1. 【TLD】标签库描述符

    tld是taglib description 的缩写 定制标签拼图中的最后一块是TLD(标签库描述符)文件.创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起 ...

  2. 一步步学习ASP.NET MVC3 (1)——基础知识

    请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学 ...

  3. ElasticSearch入门-搜索如此简单

    搜索引擎我也不是很熟悉,但是数据库还是比较了解.可以把搜索理解为数据库的like功能的替代品.因为like有以下几点不足: 第一.like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹 ...

  4. 《深入理解javascript原型和闭包系列》 知识点整理

    深入理解javascript原型和闭包系列 对原型和闭包等相关知识的讲解,由浅入深,通俗易懂,每个字都值得细细研究. 一.一切都是对象 1. typeof操作符输出6种类型:string boolea ...

  5. asp.net 中 .ASPX 与.CS文件的关系

    .aspx文件继承自.cs文件 虽然一个 Web 窗体页由两个单独的文件组成,但这两个文件在应用程序运行时形成了一个整体.项目中所有 Web 窗体的代码隐藏类文件都被编译成由项目生成的动态链接库 (. ...

  6. 配置Pycharm3.4.1调试edX Devstack

    前提: 1.安装好Ubuntu 2.在Ubuntn上利用vagrant+VirtualBox 搭建好了edX Developer Stack,并能成功访问 3.在Ubuntu下安装好了Pycharm- ...

  7. 从 C++ 到 Qt(命令行编译)good

    从 C++ 到 Qt 转载自:http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html Qt 是 C++ 的库,Qt在an ...

  8. Strut2 和Spring MVC 文件上传对比

    在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commo ...

  9. C# Json处理日期和Table

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ru ...

  10. c++模板注意事项

    c++模板类 分类: C++2012-08-20 21:28 7108人阅读 评论(2) 收藏 举报 c++编译器instantiationiostreamlinker编程 c++模板类 分类: 数据 ...