问题标签 [client-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
17105 浏览

c# - 如何在 C# 中获取服务器和客户端之间的延迟?

我正在为我用 ActionScript 3 编写的游戏引擎开发 C# 服务器应用程序。我使用权威服务器模型来防止作弊并确保公平游戏。到目前为止,一切正常:

当客户端开始移动时,它会告诉服务器并开始在本地渲染;然后,服务器告诉其他人客户端 X 已经开始移动,其中包含详细信息,以便他们也可以开始渲染。当客户端停止移动时,它会告诉服务器,服务器根据客户端开始移动的时间执行计算,客户端渲染滴答延迟并回复所有人,以便他们可以使用正确的值进行更新。

问题是,当我在服务器计算中使用默认的 20 毫秒滴答延迟时,当客户端移动相当长的距离时,它停止时会明显向前倾斜。如果我将延迟稍微增加到 22 毫秒,在我的本地网络上,一切都运行得非常顺利,但在其他位置,倾斜仍然存在。在进行了一些实验之后,我注意到所需的额外延迟与客户端和服务器之间的延迟密切相关。我什至把它归结为一个很好用的公式:延迟 = 20 + (延迟 / 10)。

那么,我将如何继续获取某个客户端和服务器之间的延迟(我正在使用异步套接字)。CPU 工作量不能太多,以免服务器运行缓慢。另外,这真的是最好的方法,还是有更有效/更简单的方法来做到这一点?

0 投票
4 回答
3783 浏览

python - 如何使用 Python 传输二进制数据?

我是第一次在客户端-服务器程序上工作,可悲的是,我不知道从哪里开始我正在做的事情。

我将使用Google Protocol Buffers在客户端和服务器之间传输二进制数据。我将使用 Python 变体。据我了解,基本思想是客户端将序列化数据,将其发送到服务器,然后服务器将反序列化数据。

问题是,我真的不确定从哪里开始向服务器发送二进制数据。我希望它会像 HTTP 请求那样“简单”,但我一直在 Google 周围寻找传输二进制数据的方法,并在大量的教程、指南和文档中迷失了方向。我什至无法通过调查 HTTP 传输来判断我是否在吠叫错误的树(我希望使用它,因此如果需要安全性,我可以将它提升到 HTTPS 的一个档次)。不过,我真的不想达到套接字编程的水平——我想在转向之前使用可用的库。(我也更喜欢标准的 Python 库,但如果有完美的 3rd 方库,我会活下去。)

因此,如果有人对如何通过 Python 传输二进制数据有一个很好的起点(或想自己解释一下),我将不胜感激。顺便说一句,我正在运行的服务器当前正在运行带有 mod_python 的 Apache。

0 投票
3 回答
640 浏览

.net - 设计客户端/服务器程序,设计问题(.Net)

我们正在设计一个客户端/服务器程序,我需要一些关于设计决策的帮助。

该程序的服务器端将作为服务在多个 Windows 服务器上运行,该服务正在监视这些服务器,需要时该服务将通过电子邮件向我们发送报告。

客户端将用于控制和管理服务器上运行的服务,但不会一直运行。

我的问题是我应该在哪里以及如何存储服务的配置。设置(smtp 等)将在客户端上定义,但在远程服务器上运行的服务(可能有很多)需要使用设置进行更新,并保留这些设置直到它们再次更新。

我可以想到两个选项,一个中央 Windows 共享,服务从中读取设置,或者当客户端点击“保存”时,设置将保存到每台服务器上的某个位置。

你会怎么办?有什么我应该注意的吗?

谢谢

0 投票
4 回答
264 浏览

c - socket:client waiting even after recieving last byte

I have client/server program in C, through which I am transferring files to the client from server.

But the client is waiting for recv even after receiving the last byte of the file. Client is terminating only if I kill it or server is killed by me. But server has to be in a loop as it to has to entertain the request of other clients.

I am using fork() in the server to entertain the request of each client. I'm exiting from the child process after the request of the client has been entertained, but the client is terminating only when the whole server program is killed.

Why doesn't the client terminate when the server's child exits?

You can see server code here and client code here.

0 投票
8 回答
5452 浏览

c# - 为什么服务器上的 Java 和客户端上的 C# 是一个流行的选择?

我见过一些例子,其中的架构是服务器端有 java,客户端有 c# - 是什么让这种组合如此出色?为什么两边的 .net 都不是更好的选择(或者事实上,两边都是 java?)

后来补充:在很多情况下,java托管在windows服务器本身上,我认为是通过tomcat(不是100%肯定)——这里的动机是什么?

0 投票
12 回答
3715 浏览

java - 如何提高客户端-服务器架构应用程序的性能?

我们有一个基于客户端-服务器架构的产品。有关使用的技术堆栈的一些详细信息。

  • 客户端 - Java Swing
  • 服务器 - RMI
  • Java 数据库 - 甲骨文

客户端位于世界各地,但 java 服务器和 oracle 数据库位于瑞典的同一台机器上。因此,存在很多网络延迟。位于遥远位置的客户端性能很差。该应用程序用于处理大小超过 50MB 的文件。通常,每个操作需要大约 1000 多个网络调用。

根据您的经验,您如何解决这个问题并提高性能?

编辑:回答几个问题

  1. 文件包含需要处理和更新到数据库的实际业务数据,不能部分发送。
  2. 一些网络调用可以批处理,但需要对代码进行重大重构。这是 2001 年编写的一个非常古老的应用程序。应用程序的设计是这样的,服务器保存所有服务,它们可以跨代码重用,业务逻辑写在客户端。因此,此业务逻辑多次调用服务器,因此是天文数字。

-斯内哈尔

0 投票
2 回答
489 浏览

client-server - 如何在具有许多客户端的服务器上同步列表?

考虑一个托管许多桌子的扑克游戏服务器。当玩家在大厅时,他有一个所有活动桌及其统计数据的列表。当玩家加入、玩和离开牌桌时,这些统计数据会不断变化。可以添加和关闭表格。不知何故,这些更改必须通知客户。

您将如何实现此功能?你会为大厅使用 TCP/UDP(也就是说,用户应该连接到服务器来观察大厅,还是你会使用请求-响应机制)?服务器会通知客户端每个事件,还是客户端轮询服务器?

请记住这一点:也许这样一个系统最重要的目标是可扩展性。添加更多服务器应该很容易以应对日益增长的用户需求,而所有用户都应该看到一个包含多个服务器的大列表。

0 投票
4 回答
977 浏览

django - 通知客户有关过期会话 - 网络编程

是否可以通知用户会话已过期?浏览器可以充当服务器并接收此类通知吗?

一种解决方案是生成在客户端进行倒计时并最终通知客户端的 JavaScript,但我是否可以通过第一种方式进行发布?

第一种方法的后果是什么?有任何安全问题吗?

例如,django 中的可行实现是什么?

0 投票
1 回答
272 浏览

java - 如何路由到最近的 RMI 服务器?

继续我的问题如何提高客户端服务器架构应用程序的性能

我决定维护一个集中式数据库和几个从服务器-数据库配置。我计划使用Symmetric DS在从属数据库和主数据库之间进行复制。每个服务器-数据库配置都将安装在离客户端更近的位置。理想情况下,出于显而易见的原因,我希望来自客户端的请求路由到最近的从服务器数据库。由于我使用 RMI 连接到服务器,我想知道当前是否有任何产品/API 可用,这可以解决这个问题?

除上述解决方案之外的任何其他解决方案都受到高度重视:)

注意:重构客户端代码绝对是一种选择,但由于应用程序非常庞大,它存在巨大的风险(可能会破坏现有代码)、耗时且昂贵。

0 投票
5 回答
2090 浏览

c# - 应用程序之间的通信(进程间)?

我即将编写一个负责与外部硬件通信的“服务器”应用程序。应用程序应处理来自客户端的请求。客户端向服务器发送消息,如果服务器忙于处理硬件,则新消息应存储在稍后处理的队列中。

客户端也应该能够取消请求(如果它在服务器的队列中)。当服务器应用程序完成硬件后,它应该能够将结果发送回请求该作业的客户端。

服务器和客户端应用程序可能在也可能不在同一台 PC 上。所有开发均在 .NET (C#) 2005 中完成。

所以,我的问题是:解决这个沟通问题的最佳方法是什么?

MSMQ?肥皂?WCF?远程?其他?