博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于php socket编程中遇到的一些问题
阅读量:3645 次
发布时间:2019-05-21

本文共 766 字,大约阅读时间需要 2 分钟。

网上有很多php socket的教程,但是我在自己写的时候还是碰到了几个问题,然后调试了一段时间,有一些目前也不知道原因:

1.第一个问题是,如果你是这么写的:

if($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) === false)    echo 'socket_create() failed, reason:' . socket_strerror(socket_last_error()) . "\n";

那么你的$sock不会是socket资源而会得到一个false,要改为如下写法:

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if($sock === false)    echo 'socket_create() failed, reason:' . socket_strerror(socket_last_error()) . "\n";

2.客户端的代码如果想得到服务器端write的内容,也是可以的,但是客户端的read要在write之后才可以:

$rs = socket_write($sock, $words);    $hear = socket_read($sock, 8192);

3.客户端不能使用socket_accept。

4.现在还有一个问题就是如果客户端退出之后,服务器端还是会一直打印false。

5.下面的代码服务器端只能支持一个客户端的连接,怎么实现服务器端支持多客户端还不清楚。

下面列出服务器端和客户端的代码:

服务器端:

客户端:

另外发现一个对于socket的比较好理解的解释:

socket就是应用层与TCP/IP协议族通信的中间软件抽象层

转载地址:http://jemyn.baihongyu.com/

你可能感兴趣的文章
Java对象序列化与反序列化
查看>>
同步、异步与阻塞、非阻塞的理解
查看>>
Java NIO核心三大组件Channel、Buffer和Selector(一)
查看>>
Java NIO核心三大组件Channel、Buffer和Selector(二)
查看>>
常用字符集及字符编码和Charset类
查看>>
JVM OOM异常
查看>>
Bootstrap 栅格基本模板使用
查看>>
SpringBoot 整合Druid数据源
查看>>
OpenLayers 入门使用
查看>>
SpringBoot 整合Mybatis
查看>>
SpringBoot 事务的使用
查看>>
Windows 常用网络cmd命令
查看>>
Java 方法(方法重载)与数组
查看>>
Java 类、对象和构造器
查看>>
Java 三大特征:封装、继承(方法覆盖,this,super)和多态
查看>>
Layui 栅格系统、常用表单和校验与监听
查看>>
Java 抽象方法、final与static、代码块和内部类
查看>>
Java 接口与枚举
查看>>
Java System与Runtime类常用方法
查看>>
Java 进程/线程与线程同步/死锁
查看>>