这里仅记录tcp协议:

关于server:

<?php
/**
* 测试关于php的socket函数
*/
/**
* 最基本的socket,服务器端:
* 创建
* $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
* 绑定
* socket_bind($sock,'127.0.0.1');
* 监听
* socket_listen($sock,5);
* 得到连接
* $msgSock = socket_accept($sock);
* socket_write();
* socket_read();
*/
$address = '127.0.0.1';
$port = 12345;
if(($sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp')))===false)
{
echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
//绑定
if(socket_bind($sock,$address,$port) === false)
{
echo 'socket bind failed '.socket_strerror(socket_last_error())."\r\n";
}
//监听
if(socket_listen($sock,10) === false)
{
echo 'socket listen failed '.socket_strerror(socket_last_error())."\r\n";
}
do
{
$msgSock = socket_accept($sock);
if($msgSock === false)
{
echo 'socket accept failed '.socket_strerror(socket_last_error())."\r\n";
break;
}
//发送到客户端
$msg = "server连接成功了!\r\n";
socket_write($msgSock,$msg,strlen($msg));
//读从客户端接收的数据
$reciveMsg = socket_read($msgSock,8192);
echo "reciveed msg is: ".$reciveMsg."\r\n";
socket_close($msgSock);
}while(true); socket_close($sock);

关于client:

<?php
/**
* 关于客户端的socket
*/
/**
* 函数
* socket_create();
* socket_connect();
* socket_write();
* socket_read();
*/
$address = '127.0.0.1';
$port = 12345;
$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if($sock === false)
{
echo "socket create failed ".socket_strerror(socket_last_error())."\r\n";
}
echo "attempt to connect server...\r\n";
$result = socket_connect($sock,$address,$port);
if($result === false)
{
echo "socket connect failed ".socket_strerror(socket_last_error())."\r\n";
}
echo 'connect to server ..'."\r\n";
$msg = "client connect success\r\n";
socket_write($sock,$msg,strlen($msg));
while($out = socket_read($sock,8192))
{
echo $out."\r\n";
}
echo "close socket ..\r\n";
socket_close($sock);

php的socket还有一种套接字流,都是stream打头的函数,其中也有server和client,这里不记录

关于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. Javac编译与JIT编译

    本文转载自:http://blog.csdn.net/ns_code/article/details/18009455 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的 ...

  2. ios版本更新总结

    更新思路,获取APP Store 版本号与项目本地版本号对比,如果本地低于商店版本号,就提示用户更新(说明:在上架项目时请保持本地和商店版本号一致,避免检测更新问题被拒) 1.获取商店版本号,代码如下 ...

  3. linux统计单词数

    sort +awk+uniq 统计文件中出现次数最多的前10个单词 实例 cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sor ...

  4. centos7安装mariadb后无法启动的问题

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方 ...

  5. Visual Studio 2010 使用 ankhsvn

    之前用的 Windows XP + Visual Studio 2010 + ankhSvn,其中ankhSvn安装完后直接可用, 后来系统换成Windows10后安装ankhSvn,Extentio ...

  6. openvpn环境搭建

    以下为服务端.客户端下载安装包,在CentOS 6.5部署,也可以找到相关下载源 openvpn-2.2.2.tar.gz,openvpn-2.1.3-install.rar,(https://git ...

  7. The Key to final data

    // FinalData.java - (insert one line description here) package com.hp.ci.mgmt.perm.hal.localization; ...

  8. NSCondition用法

    NSCondition用法 使用NSCondition,实现多线程同步...举个列子 消费者跟生产者... 现在传言6s要出了.. 消费者想买6s.现在还没有6s.消费者等待6s生产. 生产了一个产品 ...

  9. HDU2639[背包第K大]

    题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=2639] 题意:求第k大背包. 题解:利用二路归并的思想,求解第K大的值. #include<bi ...

  10. zkw费用流

    期末结束,竞赛生活继续开始,先怒刷完寒假作业再说 至于期末考试,数学跪惨,各种哦智障错,还有我初中常用的建系大法居然被自己抛至脑后,看来学的还是不扎实,以后数学要老老实实学.物理被永哥黑了两分,然后很 ...