[Linux] 多进程网络编程监听一个端口

SO_REUSEPORT支持多个进程或者线程绑定到同一端口

每个进程可以自己创建socket、bind、listen、accept相同的地址和端口,各自是独立平等的。让多进程监听同一个端口,各个进程中accept socket fd不一样,有新连接建立时,内核只会唤醒一个进程来accept,并且保证唤醒的均衡性

<?php
$context=stream_context_create();
stream_context_set_option($context, ‘socket‘, ‘so_reuseport‘, 1);
for($i=0;$i<2;$i++){
    $pid = pcntl_fork();
    if($pid == 0){
        while(true){
            $socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr,STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,$context);
            while ($conn = @stream_socket_accept($socket,5)) {
                fwrite($conn, getmypid().‘:时间:‘ . date(‘Y-m-d H:i:s‘) . "\n");
                fclose($conn);
            }
            fclose($socket);
        }

    }
}

while(1){
    $pid = pcntl_wait($status);
    var_dump($pid,$status);
    sleep(1);
}

原文地址:https://www.cnblogs.com/taoshihan/p/12014162.html

时间: 2024-10-07 01:32:07

[Linux] 多进程网络编程监听一个端口的相关文章

apache 使用心得(启动多实例,单实例监听多端口,单实例监听多域名)

很久之前就手动配置过apache了,今天遇到一个需要在阿里云服务器上配置apache路由多个域名到不同的服务器根目录这样的问题,研究了一段时间,得出了下面的心得,分享给大家~ *以windows系统为例子 下面要会说到的内容: 1 开启多个apache实例,监听多个端口(作用就是方便读取不同的配置文件) 2 单个apache实例监听多个端口 3 单个apache实例监听一个端口(80),实现不同域名访问80端口的时候,指向不同的服务器根目录 1 开启多个apache实例 httpd.exe -k

Python黑客编程基础3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: ?      操作系统:kali Linux 2.0 ?      编程工具:Wing IDE ?      Python版本:2.7.9 ?      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

让IIS只监听一个IP上的80端口

服务器上分配了3个IP,想让IIS监听其中一个IP,其余端口分配给tomcat,经研究方法如下: 1.打开命令行,运行CMD 进入CMD界面2.输入netsh 进入网络配置3.输入http 进入HTTP配置4.输入sho iplisten 查看当前IIS监听的IP列表 (如果为空即默认为所有IP)5.输入 add iplisten ipaddess=10.1.1.1 (这里会提示添加成功)6.再次输入 sho iplisten 进行查看 (正常情况这里会出现 10.1.1.1的信息) 到上面为止

linux系统实现多个进程监听同一个端口

通过 fork 创建子进程的方式可以实现,其他情况下不行. 当连接到来时,子进程.父进程都可以 accept, 这就是著名的"惊群"问题(thundering herd problem). 惊群现象 在该模型下(多个子进程同时共享监听套接字)即可实现服务器并发处理客户端的连接.这里要注意的是,计算机三次握手创建连接是在内核进程里完成的,不需要应用服务进程参数的,而服务进程仅仅要做的是调用accept将已建立的连接构建对应的连接套接字connfd(可参考 http://blog.csdn

Linux Socket 网络编程

Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后,过段时间不看,重新拾起这些知识的时候又要从头开始,所以,在这里做个笔记也算是做个模板,以后可以直接从某一个阶段开始接着玩... 1. socket套接字介绍 socket机制其实就是包括socket, bind, listen, connect, accept等函数的方法,其通过指定的函数实现不同

linux socket网络编程 常用函数及头文件

转自:http://blog.chinaunix.net/u3/102500/showart_2065640.html 一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性. 3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问. 二 基本套接字系统调有有如下一

16.4 配置Tomcat监听80端口;16.5、16.6、16.7配置Tomcat的虚拟主机(上中下);16.8 Tomcat日志

扩展: 邱李的tomcat文档 https://www.linuser.com/forum.php?mod=forumdisplay&fid=37 JAR.WAR包区别 http://blog.csdn.net/lishehe/article/details/41607725 tomcat常见配置汇总 http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html resin安装 http://fangniuwa.blog.51cto.com/10209

【linux高级程序设计】(第十三章)Linux Socket网络编程基础 4

网络调试工具 tcpdump 功能:打印指定网络接口中与布尔表达式匹配的报头信息 关键字: ①类型:host(默认).net.port host 210.27.48.2 //指明是一台主机 net 202.0.0.0 //指明是一个网络 port 23 //指明端口号 ②确认传输方向:src. dst. dst or src. dst and src src 210.27.48.2 //ip包中源地址为此值 dst net 202.0.0.0 //目的网络地址是202.0.0.0 ③协议关键字: