PHP可以创建socket服务。

  先熟悉几个php网络方面的函数,操作手册地址  http://php.net/manual/zh/ref.sockets.php

  简单介绍下socket,它表示套接字,用于TCP/IP协议。稍微了解网络通讯的知道,建立TCP/IP需要两方各自的网络地址IP+端口port,这个IP+port就是socket,通信需要一对这么socket。比如常见的浏览器请求服务器,浏览器端的IP+随机找一个空闲的端口号,连接对方服务器的IP+服务端口(通常http服务是80)。

  对上边讲解的浏览器请求服务器的socket做个代码例子,加深下理解:

<?php

  $remote_ip = '61.135.169.125';
$remote_port = '80';
$socket = localsocket($remote_ip, $remote_port);
echo "local socket is $socket\n";
echo "remote socket is $remote_ip:$remote_port \n"; function localsocket($dest='61.135.169.125', $port=80)
{
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($socket, $dest, $port);// dest+port是远端的服务器
socket_getsockname($socket, $addr, $port);// 获取本地的socket, addr + port是本地的
socket_close($socket);
return $addr.":".$port;
}

通过输出本地的ip+port不难发现,本地端口的确是随机给出的。

  

PHP创建socket服务的更多相关文章

  1. C#创建socket服务

    1.新建windows服务,名称(WebSendMsgSocket,注意检查属性-版本号)  双击Service1.cs打开设计视图,在设计视图中右键,选择添加安装程序   安装serviceProc ...

  2. Java后台创建Socket服务接收硬件终端发送的数据

    最近项目中有遇到后台接收硬件终端发送的数据并解析存储的需求,代码总结如下(有时间再来一一讲解,最近比较忙): @Override public void start() { ExecutorServi ...

  3. Python使用TCPServer编写(多线程)Socket服务

    SocketServer包对socket包进行了包装(封装),使得创建socket服务非常简单. TCPServer+BaseRequestHandler 使用TCPServer和BaseReques ...

  4. 关于javaweb 项目 ssm框架 启动tomcat服务器同时启动一个socket服务

    1.创建监听类 import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax. ...

  5. 使用PHP创建一个socket服务端

    与常规web开发不同,使用socket开发可以摆脱http的限制.可自定义协议,使用长连接.PHP代码常驻内存等.学习资料来源于workerman官方视频与文档. 通常创建一个socket服务包括这几 ...

  6. 基于Socket创建Web服务

    基于Socket创建Web服务 为什么要使用Socket呢,我们来看下图

  7. 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq

    常量,字段,构造方法   常量 1.什么是常量 ​ 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...

  8. Web Service 实例基于Socket创建Web服务

    ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp so ...

  9. Java的socket服务UDP协议

    练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import ...

随机推荐

  1. java基础(五) String性质深入解析

    引言   本文将讲解String的几个性质. 一.String的不可变性   对于初学者来说,很容易误认为String对象是可以改变的,特别是+链接时,对象似乎真的改变了.然而,String对象一经创 ...

  2. git 入门教程之忽略文件

    忽略文件 "并不是所有的牛奶都叫特仑苏",在版本控制系统中也有相似的表达,那就是"并不是所有的文件都需要提交". 有的是因为没必要提交,比如日志文件,系统缓存文 ...

  3. (网页)parseFloat在工作中遇到的错误

    parseFloat(23.23) == parseFloat(23.2299999999999).toFixed(2) 类似与以上的代码,展示没什么问题,一旦比较,看展示相等其实不相等,小数位的问题 ...

  4. MySQL 安装及卸载详细教程

    本文采用最新版MySQL8版本作为安装教程演示,本人亲试过程,准确无误.可供读者参考. 下载 官网下载 --> 社区免费服务版下载. 下载Windows安装程序MySQL Installer M ...

  5. Visual Studio Team Services Demo Generator简介

    Visual Studio Team Services Demo Generator简介 Visual Studio Team Services Demo Generator能够帮助我们在Visual ...

  6. mysql练习----The JOIN operation

    game id mdate stadium team1 team2 1001 8 June 2012 National Stadium, Warsaw POL GRE 1002 8 June 2012 ...

  7. c/c++ 类模板初探

    类模板 1,模板类里的函数都是模板函数 2,模板类里的函数,在类外面实现的时候,要用模板函数(方法:push_back)的方式实现,在类内部实现时,不需要用模板函数(方法:show)方式实现. 3,用 ...

  8. NSJSONSerialization 反序列化失败 NSCocoaErrorDomain Code=3840

    NSJSONSerialization 反序列化失败 NSCocoaErrorDomain Code=3840  NSCocoaErrorDomain Code=3840 “No string key ...

  9. jQuery设置元素的readonly和disabled属性

    jQuery的api中提供了对元素应用disabled和readonly属性的方法,如下: 1.readonly    $('input').attr("readonly",&qu ...

  10. 类中的 this关键字

    this可用于区分局部变量和成员变量,因为构造函数中如果使用 this.成员变量 = 参数值, 那么可以在new对象时,将初始化值赋值给成员变量,否则成员变量赋值失败, 所以this可以区分成员变量和 ...