无聊写的一个PHP Socket类,功能还比较简单,不完善.

<?php
/** *//***
     * @project:socket类
     * @license:GPL
     * @author: 8th@live.cn-星期八
     * @description:PHP Socket协议异步通信
     * @file:socket.class.php
     * @created date:Fri Apr 25 12:22:33 CST 2008
     * @last modified :
     ***/
class sockets
{
    public $host;//通信地址
    public $port;//通信端口
    public $limitTime=0;//连接超时时间
    public $backlog=3;//请求队列中允许的最大请求数
    private $socket=null;
    private $result=null;
    private $spawn=null;
    private $input=null;
    //构造函数
    public function __construct()
    {
        set_time_limit($this->limitTime);
        $this->socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    }
    //创建Socket连接,监听外部连接
    public function socket_bind_listen()
    {
        $this->result = socket_bind($this->socket, $this->host, $this->port) or die("Could not bind to socket\n");
        $this->result = socket_listen($this->socket, $this->backlog) or die("Could not set up socket listener\n");
    }
    //接受请求连接,调用socket处理信息
    public function accept_client()
    {
        $this->spawn = socket_accept($this->socket) or die("Could not accept incoming connection\n");
        $msg = "Welcome to the Test Server";
        socket_write($this->spawn, $msg, strlen($msg));
    }
    // 读取客户端输入 
    public function read_client()
    {
        $this->input = socket_read($this->spawn, 2048, PHP_NORMAL_READ) or die("Could not read input\n"); 
    }
    // 处理客户端输入并返回数据 
    public function write_client()
    {
        socket_write($this->spawn, $this->input, strlen ($this->input)) or die("Could not write output\n");
    }
    //析构函数
    public function __destruct()
    {
        socket_close($this->spawn); 
        socket_close($this->socket); 
    }
}
/** *//***
$socket_test=new sockets();
$socket_test->host="192.168.0.2";
$socket_test->port="13654";
$socket_test->socket_bind_listen();
$socket_test->accept_client();
$socket_test->read_client();
$socket_test->write_client();
     ***/
?>

转载于:https://www.cnblogs.com/8th/archive/2008/04/23/socket.html

无聊写的一个PHP Socket类相关推荐

  1. 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成...

    写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法: 1.点击类旁边的警告符号: 2.选择Add generated seria ...

  2. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...

    昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...

  3. 我写的一个 C++ 复数类

    我的C++ 的基础一直都不太扎实,最近有点空闲时间,找了本 C++ Primer 仔细的读了读.看完运算符重载那一章时,就想到写个复数类来练一练手. 实际上 C++ 中是有复数类的,而且还是个模版类, ...

  4. 今天工作的效率不高,才写了一个打印管理类

    整个下午昏昏沉沉的,很想睡觉,可能是因为昨天晚上看"<龙刀奇缘>"看的太晚了:这布电影还不错,可惜情节太简单了点:这里贴个介绍,有兴趣的可以看看: 中文名称:龙刀奇缘 ...

  5. 同事写了一个疯狂的类构造器,我要疯了,Builder 模式都不会么?!!

    疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...

  6. entity framework 6 我写了一个公用数据类

    public class BaseDAL{string strConn = "";public BaseDAL(string connString){strConn = connS ...

  7. java输出横纵坐标点_java编程 知道坐标求三角形 做了一部分题目要求写出一个Point(点)类,该类具有x,y(表示点的横、纵坐标)两个属...

    共回答了11个问题采纳率:100% package aaa; public class Triangle { private Line line1; private Line line2; priva ...

  8. 最近有些无聊写了一个抓取github的ss账号的东西

    github是https类型的直接去load网址 程序就死了.获取不到相关的东西. 然后 我就大概在网上搜了关于Qt访问https的东西,帖子到时很多,都只是说了大概怎么用.于是就自己照着写了写,本人 ...

  9. java的概率的程序_java实现一个抽奖概率类

    在一些项目需求中,可能会遇到抽奖问题,如提供一系列奖品及获奖概率,要求根据概率返回每次抽到的奖品.以下是本人在实际项目中写的一个抽奖工具类,与大家共同分享: import java.util.Arra ...

最新文章

  1. .net 无法通过嵌套类型访问外部类型的非静态成员-解决方案
  2. numpy中reshape方法详解
  3. Jquery实现可拖拽的树菜单
  4. 5.go 代码包 package
  5. LSTM实现情感分类
  6. 全国各地所有高校名单数据库 全国所有高校排名
  7. 计算机安全模式无法启动,电脑安全模式启动不了怎么办
  8. python基础坑点
  9. iOS11界面交互设计规范(iOS 11 Human Interface Guidelines)
  10. Java 操作Word书签(一):添加、删除、读取书签
  11. PBS任务只排队,不运行
  12. 解决memoryerror
  13. 坚定、信心和进取是成功的基石
  14. 在12306的程序猿面前,没人敢说委屈
  15. linux--yun详解
  16. linux小主机玩法,遗传算法有好多有趣的玩法,不只能用来凑论文
  17. Java年月的正则表达式_java如何判断是否为有效的年月日
  18. hjr-SQL-ORECAL
  19. 时钟树综合(CTS)
  20. [转]git的GUI工具Sourcetree使用及命令行对比

热门文章

  1. 古代大臣上朝时手里拿的是什么东西
  2. svg图片在vue脚手架vue-cli怎么使用
  3. vue计算属性的缓存和方法调用的有什么区别?
  4. [BZOJ4259]残缺的字符串
  5. 数据库02_字段类型
  6. 支付系统整体设计:整体架构设计以及注意要点(三)
  7. C# 之浅拷贝与深拷贝问题拙见(一)
  8. 新版Microsoft Azure Web管理控制台 - Microsoft Azure New Portal - (3)
  9. wpf Command Binding
  10. 2.数据中心网络演进