问题标签 [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 投票
2 回答
3516 浏览

c# - C# 客户端-服务器协议/模型问题

我试图在概念上通过我用 c#(客户端和服务器)编写的客户端-服务器套接字应用程序的模型来工作。我的服务器需要同时处理多个客户端,最好是同时处理来自客户端的多个请求。我已经为我的通信制定了一个容器,我将在每条消息的开头发送一个固定长度的标头,其中包含(除其他外)消息的长度。我有一些使用 c# 进行套接字编程的经验,所以我很喜欢使用异步套接字。

从概念上讲,我遇到的主要问题是我需要客户端和服务器都能够随时接收消息。客户端将建立连接,并保持“登录”状态(就像 IM 客户端一样),它需要在任意时间接收数据并在任意时间发出请求。作为协议的一部分,我还希望接收对每个请求的响应(无论是从服务器到客户端,还是从客户端到服务器)。

如果可能的话,我希望能够使用单个套接字。我相信我可以使用两个套接字来完成这项工作,一个用于发出服务器->客户端请求,一个用于客户端->服务器请求,但我不希望处理两个端口/连接的额外复杂性。但是,使用单个套接字,我不确定如何管理发送请求并在可以交错时获取响应。

我在搜索中找不到任何类似服务器或客户端的示例。感谢任何提供任何想法的人。

0 投票
1 回答
1501 浏览

client - 如何创建消息服务?

我想创建一个使用 XMPP 协议的消息传递服务。我将如何实现该服务的服务器端和客户端方面?我知道我需要一个运行消息传递框架的服务器(如 Jabberd 2)。设置和运行会有多难?另外,将客户端程序连接到此服务的最佳方法是什么?我将如何开始将消息从一个客户端通过服务器推送到另一个客户端?

0 投票
4 回答
3378 浏览

c# - C# 控制台:边读边写并保留结构

我正在编写一个通过 TCP 连接到服务器的 C# 控制台应用程序,它使用单独的线程来侦听来自服务器的传入消息,我希望它将它们写入控制台,同时从控制台读取消息。我能够做到这一点,但我有一个问题。

控制台在我输入时显示此信息,并出现一条消息:

来自服务器
的消息 来自服务器的消息
我的来自服务器
g 的消息到服务器

我希望它将我的消息与服务器消息分开,如下所示:

来自服务器
的味精 来自服务器的
味精 来自服务器的味精
我的味精到服务器

如果我收到一条消息,我仍然想保留我输入的消息,但我不希望它与收到的消息混淆,我希望它在最后一行保持完整。

我可以这样做吗?如何?

当来自服务器的消息进入时,我可以将消息转移到控制台的末尾吗?

0 投票
5 回答
1814 浏览

architecture - 客户端(桌面应用程序)提取数据......但我希望服务器(网络应用程序)推送数据

我有一个客户端-服务器应用程序——其中服务器本质上是一个 ASP .NET Web 应用程序,而分布式客户端是桌面应用程序。

客户端需要从服务器接收一些数据 - 当客户端有新数据时。现在,这样做的方式是 - 客户端每隔 x 分钟(比如 2 分钟)不断查询 Web 服务,并不断检查客户端是否有新数据。

理想情况下,它应该工作的方式是桌面应用程序应该在更新可用时接收更新,它不需要从服务器中提取;相反,服务器应该能够推送到客户端。

我该如何去做——考虑到解决方案的架构——Web 应用程序需要将数据推送到同一网络(LAN)中的桌面应用程序(客户端)?

0 投票
2 回答
2961 浏览

c++ - 在 C++ 中使用服务器分配连接的点对点聊天程序的良好实现是什么?

有一段时间,我一直对使用 C++ 创建一个概念验证聊天程序很感兴趣。我已经对这个想法进行了很多思考,甚至​​写下了我将如何设计系统的开始,但在实施时我遇到了一个障碍。

我想知道在 C++ 中使用服务器路由连接的点对点聊天客户端的实现是什么样的。

服务器将用作对等点的中央注册表,但不用作主要连接。除了在对等点之间分配连接以实现对等点之间的最佳路径之外,服务器不会以任何方式与客户端交互。在第一个版本中,它只是一个所有客户端都连接到的目录,然后客户端可以使用该目录连接到其他可用于聊天的客户端。(我希望这能解释得更多)。:)

0 投票
5 回答
10087 浏览

client-server - 半条命 2 多人游戏协议如何运作?

我想知道半条命 2 多人游戏协议如何在反恐精英:来源或失败之日:来源等模组中发挥作用。我相信他们使用了某种混淆和专有压缩算法。我想知道不同类型的消息是如何编码在一个数据包中的。

0 投票
7 回答
2436 浏览

client-server - 什么是维护与添加新功能?

维护和新功能之间的界线应该在哪里?

牛津英语词典将维护定义为:

(7.a) 使某物处于工作状态、维修等状态;通过提供设备等手段来维持建筑物、机构、部队等;如此保持的状态或事实;维持的手段或规定。

我正在使用客户端-服务器应用程序并维护客户端。根据定义,我希望执行:

  • 错误修复
  • API 适配(客户端继续使用服务器所需的微小更改)
  • 针对已识别的性能问题进行优化

我不希望执行:

  • 新开发(添加新功能)

维基百科软件维护页面引用了纠正性、自适应性、完善性和预防性维护,这似乎符合我的预期,但客户端-服务器的性质使事情变得复杂。

编辑:对于没有依赖关系的独立应用程序,如果软件工作,它应该继续工作。对于客户端-服务器应用程序,客户端可能会在服务器更改时中断。尽管这不会改变维护的定义,但它意味着有更多的机会和场合需要对客户端应用程序进行更改。

如果两方要就维护合同达成一致,则必须满足对什么是合格和维护以及什么是新功能的相互理解,因此是这个问题。

0 投票
2 回答
738 浏览

javascript - 如何将 Javascript 事件发送回 Rails 进行处理?

如果我的 Javascript 层中有用户交互,我可以让 Javascript 操作触发 Rails 控制器操作并将数据从 Javascript 传递到这些 Rails 方法吗?

0 投票
4 回答
12533 浏览

sockets - 非阻塞套接字轮询与阻塞套接字

我需要同时发送接收
哪个选项会更好:

  • 1 个使用非阻塞套接字处理发送和接收的线程

或者

  • 2个线程,一个处理阻塞recv()+一个处理send()?

还是有其他解决方案?

我预计最多有 50 个双向连接。这导致选项#1 中有 50 个线程,选项#2 中有 100 个线程。

0 投票
2 回答
2904 浏览

c# - 计算客户端和服务器之间的带宽?

我有一个应用程序每 30 秒调用一次服务器上的 ASP.NET 页面。我想将其用于两个目的:

  1. 绘制我的客户的正常运行时间
  2. 绘制从我的客户端到服务器的平均带宽

计算从客户端到服务器的带宽(以每秒字节数为单位)的最佳方法是什么?

我假设我记录时间,调用页面,等待响应,然后再次获取时间,比较时间并计算带宽......但是如何计算带宽?