多个进程共享同一个socket的个人观点

Linux Socket + pthread + pipe 实现socket通信和多线程数据共享 Linux Socket + pthread + pipe 实现socket通信和多线程数据共享 大道至简,基础的东西不能忘,对于网路时代,开发应该都跑不了socket,作为一个基本功,也好久没写写,简单了一个复习下。主要目标复习下socket的同时,复习下linux多线程处理 涉及知识点: 1,socket 2,linux pthread使用 3,信号量(semaphore)、锁(mutex)、管道(pipe)、条件 更多知识点,百度应该比较多了。 代码逻辑: 1,server:最大支持10个链接,当收到 阅读详情
论坛出现如下一个帖子,要在多个进程里面共享Socket, 而不是线程里面。

需求:
为了使游戏平台和具体的游戏,比如QQ游戏大厅和地主,杀人,放火游戏进程分离,但是却有要共享同一个socket连接

C/C++实现:在windows c下编程实现可以用复制SOCKET句柄WSADuplicateSocket或共享内存的方式,但在java中不知用何种方式,或者类似的方式,我 search了一下,似乎JOMP说的是共享内存,但却不知如何使用。还有真的有必要用这种方式实现游戏平台和具体的游戏分离吗,有什么更好的实现方式 呢?


个人观点:

单独启动一个JVM做Socket代理,也就是消费者。
其它要共享socket的,都直接和他通信,方法随意,可以是本地socket,rmi,webservice

举例:
这个和我们局域网的代理服务器没有任何区别。
我们所有人上网,都是共享一个代理服务的。
局域网的每个机器都是生产者,把各自的读取请求发送给代理
代理作为统一的消费者,安排执行顺序并返回结果。
发送的方法很多,比如设置网关,本地设置代理服务器,本地安装软件。
socket本地多进程通信基本使用方法和示例 socket通信基本函数讲解 阅读详情

相关推荐

多线程下的Socket网络通信

第一讲:多线程 1:进程与线程的描述: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1~n个线程。(进程是资源分配的最小单位)   线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位) *并发和并行 2:实现多线程的常用方式: 继承Thread类 实现Ru...

qq_36074233的博客 1843

tcp通信:多进程共享listen socket方式

看tornado源码多进程(process.py)那段,发现他的多进程模型和一般常见的模型有点不一样,多见的是主进程bind-> listen -> accept, 将accept返回的socket用子进程处理,而tornado是在bind -> listen -> fork, 在listen之后fork,多个子进程共享listen socket, 每个子进程都accept。 以前没见过这种模型,

Arthur的随笔 8821

linux fork进程请谨慎多个进程/线程共享一个 socket连接,会出现多个进程响应串联的情况。

昨天组内同学在使用php父子进程模式的时候遇到了一个比较诡异的问题 简单说来就是:因为fork,父子进程共享了一个redis连接、然后父子进程在发送了各自的redis请求分别获取到了对方的响应体。 复现示例代码: testFork.php 1 <?php 2 require_once("./PowerSpawn.php"); 3 4 $ps ...

weixin_40021443的博客 763

socket 网络编程——端口复用技术(setsockopt())(linux下多个进程监听同一个端口)

端口复用技术端口复用1、背景2、定义3、setsockopt4、实验案例参考 端口复用 1、背景 操作系统如何区分一个socket的呢? socket = 《A进程的IP地址:端口号,B进程的IP地址:端口号》 也就是说,只要五元素不完全一致,操作系统就能区分socket。 场景分析: 在A机上进行客户端网络编程,假如它所使用的本地端口号是1234,如果没有开启端口复用的话,它用本地端口1234去连接B机再用本地端口连接C机时就不可以,若开启端口复用的话在用本地端口1234访问B机的情况下还可以用本地端口

JMW1407的博客 3万+

Kali Linux实战:5种局域网DoS攻击手法全解析(附防御方案)

本文以Kali Linux为平台,深入解析了局域网内五种典型的DoS攻击手法,包括TCP SYN Flood、ICMP Flood、MAC地址泛洪、DHCP耗尽以及应用层CC攻击模拟。通过实战演示结合Wireshark抓包分析,清晰揭示了攻击原理与流量特征,并提供了从主机加固、防火墙规则到交换机安全配置(如端口安全、DHCP Snooping)等企业级防御方案,旨在帮助安全人员构建纵深防御体系。

weixin_29313423的博客 399

Cursor集成Claude 4.6免费版:本地IDE合规调用指南

大语言模型编程助手(LLM Copilot)已成为现代开发标配,其核心能力依赖于上下文理解、代码推理与结构化输出等关键技术原理。Anthropic官方提供的Claude系列模型,尤其Claude 4.6,凭借200K超长上下文、tool use函数调用和严格可控的API设计,在工程实践中展现出显著技术价值。该能力可无缝嵌入本地IDE环境,支撑代码解释、跨文件分析、单元测试生成等高频开发场景。本文聚焦Cursor这一开源可审计IDE,详解如何合规复用Anthropic免费tier接口(/v1/messages

weixin_34095889的博客 539

php linux fork进程 多个进程/线程共享一个 socket连接 出现多个进程响应串联

简单说来就是:因为fork,父子进程共享了一个redis连接、然后父子进程在发送了各自的redis请求分别获取到了对方的响应体。 复现示例代码: testFork.php <?php require_once("./PowerSpawn.php"); $ps = new Forkutil_PowerSpawn(); $ps->maxChildren = 10 ; $ps->timeLimit = 86400; $redisObj = new Red

whatday的专栏 733

FreeRTOS移植实战:从零开始在STM32上搭建多任务系统(含Proteus仿真配置)

本文详细介绍了如何在STM32平台上从零开始移植FreeRTOS,并搭建多任务系统,包含Proteus仿真配置。通过环境准备、源码移植、多任务设计到仿真调试的全流程实战,帮助开发者快速掌握FreeRTOS在STM32上的应用技巧,提升嵌入式开发效率。

weixin_33737134的博客 232

进程间的共享内存,socket编程

IPv6是较新的版本,由128位二进制数组成,以冒号分隔的十六进制表示,如2001:0db8:85a3:0000:0000:8a2e:0370:7334。删除共享内存:最后,当所有进程都不再需要共享内存时,创建共享内存的进程或拥有足够权限的进程可以删除共享内存段,释放资源。分离共享内存:当进程不再需要访问共享内存时,它会从自己的地址空间中分离共享内存段,这通常通过shmdt函数实现。公共地址:也称为公网地址,是分配给互联网上可访问的设备的IP地址,它们是唯一的,可以在全球范围内被识别。

qq_63641691的博客 1692

别再让地图加载慢吞吞!GeoServer + GeoWebCache 缓存配置实战(附性能对比)

本文详细介绍了如何通过GeoServer和GeoWebCache优化地图服务性能,实现地图加载速度的显著提升。从缓存机制解析到实战配置流程,再到高级性能调优技巧,帮助开发者构建高效地图缓存系统,解决地图加载慢的问题。

weixin_42525369的博客 407

python数据处理(一)——如何用python实现excel功能

python如何实现excel的数据提取、指标构建,进行透视分析。

一名数据分析师 2709

同一个父进程的多个子进程之间的通信

对于父子进程之间的通信, 或者是没有亲缘关系的进程之间的通信, 之前都有过多多少少的了解, 就不作说明了. 这里想要讨论的是多个子进程之间的通信. 以前若是有多个子进程之间通信的需要, 那么我可能会选择使用共享内存? 使用消息队列? 或者使用一系列进程间通信机制 但这些同样适用于没有亲缘关系的进程之间的通信. 这样做似乎没有必要. 这里将要实现的子进程之间的通信, 使用了两个技术:

博客 6793

Windows本地化部署Dify完整指南

本文详细介绍了在Windows系统上本地化部署Dify的完整步骤,涵盖了Docker Desktop的安装与配置、Dify源代码的获取、环境变量的设置、服务的启动与管理、以及常见问题的解决方案。文章首先指导用户如何下载和安装Docker Desktop,并配置WSL 2功能。接着,详细说明了如何获取Dify源代码,并通过Docker Compose启动服务。文章还提供了高级配置指南,包括如何配置大语言模型和更新Dify版本。最后,针对Docker镜像拉取失败等常见问题,提供了详细的诊断和解决方案。通过本文,

jacky_zhuyuanlu的博客 1万+

linux fork进程请谨慎多个进程/线程共享一个 socket连接,会出现多个进程响应串联的情况。...

昨天组内同学在使用php父子进程模式的时候遇到了一个比较诡异的问题 简单说来就是:因为fork,父子进程共享了一个redis连接、然后父子进程在发送了各自的redis请求分别获取到了对方的响应体。 复现示例代码: testFork.php 1 <?php 2 require_once("./PowerSpawn.php"); 3 4 $ps ...

weixin_30396699的博客 522

Power Automate 最常用的十大场景以及解决方案

3.2 获取指定主题含有附件邮件,然后读取csv附件内容,插入数据库,调度执行存储过程,最后通过Power automate 发送paginated report 特殊格式报表给发件人。Power Automate 作为微软推出的自动化工作流工具,其适用场景非常广泛,尤其在数据库查询自动化方面能显著提升效率。2.8发送邮件,把生成csv文件当作附件,把生成html当作邮件内容在邮件boty展示。3.1 读取数据库数据,定时发送预警邮件并抄送附件和展示内容在邮件中。:已有微软产品栈,需快速实现部门级自动化。

qq_24388807的博客 3707

Unity3D实现自定义河流路径或泥石流路径

此工具是一个插件,插件很好用,可以根据地形编辑河流的走向以及宽度,也可以发挥想象编辑成其他的效果,比如泥石流效果,岩浆效果,小溪,或者大江或者大河等等博客将会介绍可以编辑河流的工具的使用。希望这篇博客对Unity的开发者有所帮助。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。提示:以下是本篇文章正文内容,下面案例可供参考本次总结的就是工具的使用, 有需要会继续增加功能不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

心疼你的一切博客 5272

Linux中不同进程同一个端口,linux系统实现多个进程监听同一个端口

通过 fork 创建子进程的方式可以实现父子进程监听相同的端口。方法:在绑定端口号(bind函数)之后,监听端口号之前(listen函数),用fork()函数生成子进程,这样子进程就可以克隆父进程,达到监听同一个端口的目的。# 代码示例:一主一子import socketimport selectimport sysimport structimport osimport timeif __nam...

weixin_32371243的博客 1619

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python多进程关闭socket_python实现多进程监听同一个socket的prefork服务端模型

这两天迁移数据,没时间写博客了…… 正好这两天跟同事聊了下prefork模式,就拿出来聊聊。。。 如果你跟我一样是python程序员,我很建议你用prefork+gevent协程的方式。python实现socket服务相当的容易,但是默认是单进程状态,是堵塞的…. 我想喜欢prefork这个模式的,虽然没有epoll那种基于事件的高性能,但也是可以解决单进程带来的堵塞的问题。因为prefo...

weixin_39803207的博客 469

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python多进程笔记3 - 共享内存,信号量,时间,socket,进程池

20171107 - thread - day3 知识总结: 资源使用之后需要关闭或者释放,否则资源会处于泄露的状态; 一般情况下 父进程会等子进程结束再结束; 互斥量锁的添加原则:粒度最小原则 google浏览器:ctrl + f 界面搜索 进程池中的同步方法,执行流程与单进程相似,是阻塞的执行,时间更长; 进程池中的异步方法,是多进程的,并行执行,效率高,时间更短

sinat_27864123的博客 2995

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

微服务架构中的多进程通信--内存池、共享内存、socket

微服务架构中的多进程通信--内存池、共享内存、socket

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 1456

多进程服务端实现-共享socket

众所周知,使用多进程的服务端模型有利于程序的健壮性。传统的做法是主进程负责收发数据,然后传给子进程来处理。这种做法的缺陷是需要大量的父子进程IPC,对效率来说是一种损失。 这里,我提出另外一种比较独特的做法,就是多个进程share socket,每次进程都可以accept,然后来自己处理。 几个关键点: 1) CreateProcess使用InheritHandle标记来share sock

nokianasty的专栏 7249
上一篇: 新建了三个QQ群:入门、提高和老手群
下一篇: 入门-JAVA运行环境变量的配置图文教程
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值