socket demo代码如下 :

server:

server.php

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

client:

client.php

  1. <?php
  2. error_reporting(E_ALL);
  3. set_time_limit(0);
  4. echo "<h2>TCP/IP Connection</h2>\n";
  5. $port = 1935;
  6. $ip = "127.0.0.1";
  7. /*
  8. +-------------------------------
  9. * @socket连接整个过程
  10. +-------------------------------
  11. * @socket_create
  12. * @socket_connect
  13. * @socket_write
  14. * @socket_read
  15. * @socket_close
  16. +--------------------------------
  17. */
  18. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  19. if ($socket < 0) {
  20. echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
  21. }else {
  22. echo "OK.\n";
  23. }
  24. echo "试图连接 '$ip' 端口 '$port'...\n";
  25. $result = socket_connect($socket, $ip, $port);
  26. if ($result < 0) {
  27. echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
  28. }else {
  29. echo "连接OK\n";
  30. }
  31. $in = "Ho\r\n";
  32. $in .= "first blood\r\n";
  33. $out = '';
  34. if(!socket_write($socket, $in, strlen($in))) {
  35. echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
  36. }else {
  37. echo "发送到服务器信息成功!\n";
  38. echo "发送的内容为:<font color='red'>$in</font> <br>";
  39. }
  40. while($out = socket_read($socket, 8192)) {
  41. echo "接收服务器回传信息成功!\n";
  42. echo "接受的内容为:",$out;
  43. }
  44. echo "关闭SOCKET...\n";
  45. socket_close($socket);
  46. echo "关闭OK\n";
  47. ?>

windows  运行:

修改 php.ini

开启拓展:extension=php_sockets.dll

cmd 运行如下

Linux :

拷贝文件到 /www/php/ 目录

运行 如下:

php socket的更多相关文章

  1. socket读写返回值的处理

    在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...

  2. Socket聊天程序——Common

    写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...

  3. Socket聊天程序——客户端

    写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...

  4. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  5. Socket聊天程序——初始设计

    写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...

  6. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  7. Android Socket连接PC出错问题及解决

    最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.

  8. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  9. Mono 3.2.3 Socket功能迎来一稳定的版本

    由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...

  10. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

    随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...

随机推荐

  1. 微软发布Windows 10:连Windows 7都能免费升级了

    今日凌晨,微软宣布Windows 10发布. Windows10 整体重置了 Window8 的设计,恢复了原有的开始菜单设置,系统新增了虚拟桌面功能,搜索框加分类项的形式替代原有的两栏式控制面板界面 ...

  2. 为什么心跳包(HeartBeat)是必须的?

    几乎所有的网游服务端都有心跳包(HeartBeat或Ping)的设计,在最近开发手游服务端时,也用到了心跳包.思考思考,心跳包是必须的吗?为什么需要心跳包?TCP没有提供断线检测的方法吗?TCP提供的 ...

  3. ubuntu安装redis

    1.下载安装root@21ebdf03a086:/# apt-cache search redisroot@21ebdf03a086:/# apt-get install redis-server a ...

  4. servlet--转向forward与重定向

    当使用forward形式跳转servlet时,地址栏会显示跳转前的servlet访问地址. 跳转是在服务端实现的,客户浏览器并不知道该跳转动作. forward可以跳转到另一个servlet,jsp, ...

  5. Seo的几个境界

    Seo的境界 第一层,弄些关键词排名上去. 是的,大部分人理解的Seoer,就到此为止 这里有技巧若干若干.很值得一些人去卖弄. 第二层,大量广泛的收录,很好的pr值 恭喜您,把握搜索长尾, 这种不显 ...

  6. Atitit.研发管理--提升效率--软件开发方法DSM总结o99

    Atitit.研发管理--提升效率--软件开发方法DSM总结o99 1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实 ...

  7. .NET Remoting学习笔记(二)激活方式

    目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 参考:百度百科  ♂风车车.Net 激活方式概念 在 ...

  8. 转:LAV Filter 源代码分析

    1: 总体结构 LAV Filter 是一款视频分离和解码软件,他的分离器封装了FFMPEG中的libavformat,解码器则封装了FFMPEG中的libavcodec.它支持十分广泛的视音频格式. ...

  9. Andorid--java0

    java code: public class Hello{     public static void main(String argv[]) {        System.out.printl ...

  10. 解决eclipse使用Search弹出错误问题

    在eclipse中搜索时,搜索完之后有时候会弹出错误对话框,虽然错误内容有时候不同,但是解决办法都一样. 这个问题是由于eclipse中文件不同步引起的.在eclipse中,工程文件是由eclipse ...