Articles of 客户端服务器

Linux IPC – 多个作家,单个阅读器

我从来没有在Linux上写过任何IPC C ++。 我的问题是,我将有多个客户端(作家),和一个单一的服务器(读者)。 所有这些将在同一台机器上。 编写者将把大块的数据(一个string/结构)传送给读者。 然后读者将在FIFO中读取它们,并与他们做一些事情。 据我所知,Linux上的IPCtypes是Pipes或Sockets / Message Queue。 我只是想知道如果有人能推荐我走下去的路。 我倾向于sockets,但是我没有真正的基础。 在开始这个旅程之前,我有什么要读懂的吗? 谢谢

跟踪一个孩subprocess的死亡

我怎么能追踪到一个subprocess的死亡,而没有让父进程等到subprocess被杀呢? 我正在尝试一个客户端 – 服务器场景,其中服务器接受来自客户端的连接,并为其接受的每个连接分配一个新进程。 我忽略了SIGCHLD信号来防止僵尸的创build。 signal(SIGCHLD, SIG_IGN); while(1) { accept(); clients++; if(fork() ==0) { childfunction(); clients–; } else { } } 上述情况中的问题是,如果subprocess在childfunction()函数中被childfunction() ,则全局variablesclients不会减less。 注:我正在寻找一个解决scheme,而不使用SIGCHLD信号…如果可能的话

服务器的单个端口(套接字)上的最大并发连接数

并发客户端(使用不同的端口号)的最大数量可以在同一端口(单个套接字)上与服务器通信的最大数量是多less? 什么是可能影响这个计数的因素? 我正在Linux环境中寻找这个信息和telnet。

生成唯一硬件ID的可靠方法

问题:我必须为每个联网的客户端提供唯一的ID,例如: 一旦在目标计算机上安装了客户端软件,它应该保持不变(ID),如果软件重新安装在同一台计算机和同一个OS安装中,它应该继续保留, 如果在大多数情况下修改了硬件configuration(不包括更换主板) 当安装有客户端软件的硬盘驱动器被克隆到具有相同硬件configuration的另一台计算机(或尽可能相似)时,客户端软件应该知道该更改。 一点点的解释和一些背景故事: 这个问题基本上是一个古老的问题,也涉及软件复制保护的主题,因为这里提到了一些在这方面使用的机制。 我现在应该清楚,我不是在寻找一个防拷贝scheme。 请继续阅读。 🙂 我正在开发一个应该在本地networking中工作的客户端 – 服务器软件。 我必须解决的一个问题是要识别networking中的每个独特的客户端(不是那么多的问题),以便我可以将某些属性应用于每个特定的客户端,在特定的部署生命周期中保留和执行这些属性客户。 当我正在寻找解决scheme时,我意识到以下几点: Windows激活系统使用某种对硬件修改非常敏感的重指纹机制, 磁盘映像软件在安装过程中,首次运行时或以任何其他方式复制所有卷ID(在格式化时与每个分区绑定),以及自定义,唯一生成的ID,并且存储在registry中或在硬盘上,所以很容易混淆两个。 这种问题的明显select是找出BIOS标识符(不是100%确定是否通过相同的主板型号是唯一的),因为这是我可以依赖的唯一不是重复的,通过克隆,并且不能改变(至less不能使用一些用户空间程序)。 一切都失败了,要么是不可靠的(MAC克隆,任何人?),要么太苛刻(对configuration的变化太敏感)。 我想问的问题是,我正确地做,架构明智吗? 也许有一个更好的工具,我必须完成的任务… 我想到的另一种方法是类似握手机制,其中服务器维护一个连接的客户端ID的内部查找表(甚至可以完全基于软件,在任何特定时刻都是非唯一的),并告诉客户端如果在连接时提供重复的ID,则在握手期间拿出一个不同的ID。 不幸的是,这种方法并不能很好地满足在特定客户生命周期中将特性绑定到特定客户端的要求。

closesocket线程安全吗?

如果我想从一个线程调用服务器套接字上的closesocket(),这与另一个使用相同服务器套接字运行服务器的线程是分开的,那么安全吗?