服务端代码使用到的命令 (代码中有详细注释)

  1. socket_create() — 创建 socket 套接流
  2. socket_bind() — 绑定接收的socket主机和端口,与客户端相对应
  3. socket_listen() — 监听socket
  4. socket_accept() — 接收客户端传入的信息资源
  5. socket_read() — 读取信息,并转为字符串
  6. socket_write() — 向socket_accept的套接流写入信息
  7. socket_last_error() — 获取socket的最后一条错误码码
  8. socket_strerror() — 获取错误码对应的错误信息
  9. socket_close() — 关闭socket套接流
<?php
class Server
{const HOST = '127.0.0.1';   // 主机地址const PORT = '9600';        // 端口public $socket = null;          // 存放socket套接流public $acceptResource = null;  // 存放socket_accept的套接流public function __construct(){/*** 创建 socket 套接流* 参数一:网络协议 【AF_INET(IPv4), AF_INET6(IPv6), AF_UNIX(本地通讯)】* 参数二:类型 【SOCK_STREAM(TCP), SOCK_DGRAM(UDP), SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM】* 参数三:protocol协议 【tcp, udp, icmp】tcp和udp可以直接使用常量 SOL_TCP, SOL_UDP*/$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);// 绑定接收的 socket 主机和端口$this->bind();// 监听socket$this->listen();do {// 接收客户端传入的信息资源 再 读取转化成字符串$str = $this->acceptAndRead();// 发送信息给客户端$this->write($str);// 关闭socket_accept的套接流socket_close($this->acceptResource);} while (true);// 关闭socket套接流socket_close($this->socket);}/*** socket_bind 绑定接收的socket主机和端口,与客户端相对应* 参数一:socket资源对象* 参数二:主机地址* 参数三:端口*/public function bind(){$res = socket_bind($this->socket, self::HOST, self::PORT);if (!$res) {/*** socket_last_error 获取socket的最后一条错误码码* socket_strerror 获取错误码对应的错误信息*/die('绑定失败 - '. socket_strerror(socket_last_error()));}}/*** socket_listen 监听socket* 参数一:socket资源对象* 参数二:监听的最大个数 (允许同时连接的客户端数量)*/public function listen(){$res = socket_listen($this->socket, 4);if (!$res) {die('监听失败 - '. socket_strerror(socket_last_error()));}}/*** 接收客户端传入的信息资源 再 读取转化成字符串*/public function acceptAndRead(){/*** socket_accept 接收客户端传入的信息资源* 参数一:socket资源对象*/$this->acceptResource = socket_accept($this->socket);if (!$this->acceptResource) {die('接收信息失败');}/*** 读取信息,并转为字符串(客户端传入的消息)* 参数一:socket_accept 返回的信息资源* 参数二:指定读取的最大字节数*/$str = socket_read($this->acceptResource, 1024);var_dump($str);return $str;}/*** 向客户端发送信息* @param  string $str 客户端传入的消息*/public function write($str){$str = '给客户端发的信息 - '. $str;/*** socket_write 向socket_accept的套接流写入信息 也就是向客户端发送消息* 参数一:socket_accept的套接流* 参数二:消息字符串* 参数三:消息字符串长度*/socket_write($this->acceptResource, $str, strlen($str));}
}
new Server();

php socket 服务端相关推荐

  1. 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...

    HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...

  2. Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态

    通过 getattr(socket, '_closed') 的返回值可以判断服务端的运行状态. True 是关闭状态,False 是运行中. 实例代码展示: import socketip = 'lo ...

  3. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受

    一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类         Serve ...

  4. php socket(服务端与客户端)demo

    php socket(服务端与客户端)demo完整演示: 环境是:[phpstydy,PHP版本7.3.4nts],一定要开启[sockets]服务. 服务器[index.php](源码复制即可): ...

  5. [置顶] C#中Socket服务端代码分享

    最近在对项目中Socket通讯中的服务端代码进行优化,保证能接受尽可能多的客户端的连接,并且不会丢掉连接,不会掉数据包.经过一段时间的反复测试和修改,终于达到了这一要求.服务端代码采用了异步通讯的方式 ...

  6. C# Socket服务端与客户端通信(包含大文件的断点传输)

    步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收 ...

  7. Java高级补充(Socket服务端、客户端)、Handler类、安卓Socket传数据、WebView

    Socket服务端简单地API: 主要用到以下几个API:ServerSocket用来设置端口号.accept用来和服务端连接.getInputStream用来获取输入流.read用来读取输入流里面的 ...

  8. 《零基础看得懂的C语言入门教程 》——(十三)socket服务端编写

    一.学习目标 了解C语言的socket的概念 了解C语言socket的使用方法 完成C语言socket服务端 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习 ...

  9. android socket 服务端,Android socket 服务端

    Android socket 服务端 Android 想在Android 上跑一个 socket 服务端.把在java工程里运行起来的代码直接放到android项目里来,开启线程,创建ServerSo ...

  10. java学习(166):socket服务端和客户端连接

    socket服务端 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;//socket服 ...

最新文章

  1. 西湖大学三位资深博导自述:我与我的第一位博士生
  2. First Unique Character in a String(leetcode387)
  3. linux mint系统分区,Win7删除了linuxmint的系统分区如何恢复
  4. es中的Coordinator
  5. 灰度图像--图像增强 Robert算子、Sobel算子
  6. 产品要不要做先回答的10个问题
  7. Log4j 2漏洞(CVE-2021-44228)的快速响应
  8. windows下使用net-snmp实现agent扩展(一)
  9. ubuntu系统DD对拷还原报废笔记本
  10. 文字超出显示....省略显示
  11. ADO.NET与抽水的故事 系列三——抽水机—Command
  12. 面向对象编程,设计原则,设计模式
  13. 关于 System.getProperty
  14. ubantu中让g++支持c++11的办法
  15. 研发管理系统选型必读
  16. mysql数据库原理及应用教案_《数据库原理及应用》全套教案.doc
  17. Xamarin学习笔记之尝试篇
  18. RT-Thread硬件测试(一)—— 485串口测试
  19. 破解蛋白质结构秘密的AlphaFold
  20. aardio - 【开源软件】aardio文件加解密

热门文章

  1. 32岁了学python来的及吗_你要悄悄的学Python,然后惊艳所有人,后来都学的怎么样呢?...
  2. 在线版音乐播放器APP(一)
  3. 向《数据科学实战》作者Cathy O'Neil提问!
  4. Kubectl常用命令(三)
  5. vue3 简单封装GoogleMap组件
  6. 锂矿之龙战于野:天齐锂业
  7. java中测长度的方法,java获取文件大小的几种方法
  8. pfamscan 的使用_基础工具-HMMER用法
  9. Java--Integer
  10. centos7 安装 Firefox