标签: client-server

使用Websockets代替RESTful HTTP的缺陷是什么?

我目前正在开发一个项目,要求客户端请求大量工作并将其发送到服务器.然后,服务器将作业分开并响应一组URL,以便客户端进行GET调用并回送数据.我是该项目的新手,我目前正在使用Spring websockets来提高效率.而不是客户端不断ping服务器以查看它是否已准备好返回结果,websocket现在只需直接联系客户端万岁!

让websockets从头到尾管理整个过程是不是一个坏主意?我正在使用带有Spring websockets的STOMP,是否仍然存在抛弃REST的主要问题?

rest client-server http websocket spring-websocket

57
推荐指数
2
解决办法
2万
查看次数

Python中的Socket.IO客户端库

任何人都可以为Python推荐一个Socket.IO客户端库吗?我已经浏览了一下,但我能找到的唯一一个是服务器实现,或者依赖于像Twisted这样的框架.

我需要一个不依赖于其他框架的客户端库.

仅仅使用众多连接类型之一是不够的,因为python客户端需要使用多个socketio服务器,例如,其中许多服务器不支持websockets.

python client-server socket.io

49
推荐指数
4
解决办法
5万
查看次数

为什么我们使用10.0.2.2连接到本地Web服务器而不是在Android客户端使用计算机IP地址

我们通常在url中使用10.0.2.2 :(端口号)连接到本地Web服务器,但是我们应该使用计算机的ip地址而不是10.0.2.2

那为什么我们使用10.0.2.2?

android client-server

43
推荐指数
4
解决办法
6万
查看次数

什么是简单的C或C++ TCP服务器和客户端示例?

我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案.这只是简单地将字节数组从一台计算机传输到另一台计算机 - 不需要是可扩展的/过度复杂的.越简单越好.如果可以,快速而肮脏.

我尝试使用本教程中的代码,但我无法在Linux中使用g ++进行构建:http://www.linuxhowtos.org/C_C++/socket.htm

如果可能的话,我想避免使用第三方库,因为我运行它的系统非常有限.这必须是C或C++,因为现有的应用程序已经实现.

感谢emg-2的回答,我设法使用以下步骤使上述代码示例与C++兼容:

将这些标头添加到客户端和服务器:

#include <cstdlib>
#include <cstring>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)

server.c中,将clilen的类型更改为socklen_t.

int sockfd, newsockfd, portno/*, clilen*/;
socklen_t clilen;
Run Code Online (Sandbox Code Playgroud)

client.c中,更改以下行:

if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
Run Code Online (Sandbox Code Playgroud)

至:

if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
Run Code Online (Sandbox Code Playgroud)

c++ tcp client-server

41
推荐指数
3
解决办法
13万
查看次数

TCP是在每个数据包上发送SYN/ACK还是仅在第一个连接上发送?

我有一个TCP服务器,它侦听传入的客户端,然后每秒向它发送一个数据包.我想知道,SYN/ACK数据包是否仅在初始连接时发送,所以它看起来像这样:

<client connect>
SYN
ACK
DATA
DATA
DATA
<client disconnect>
Run Code Online (Sandbox Code Playgroud)

或者它是否与每个数据包一起发送,像这样?

<client connect>
SYN
ACK
DATA

SYN
ACK
DATA

SYN
ACK
DATA
<client disconnect>
Run Code Online (Sandbox Code Playgroud)

此外,如果是第一种情况,如果您只是长时间保持连接打开,那么UDP over TCP是否有任何好处?

networking udp tcp client-server packet

41
推荐指数
2
解决办法
4万
查看次数

非常大的HTTP请求与许多小请求

我需要一个2D数组(如Json)从服务器发送到客户端.它的大小约为400x400,每个条目大约有4个字符的文本.这样就可以获得大约640KB的数据.

以下哪种极端方法更好?

  1. 我一口气对所有数据发出大量HTTP请求.
  2. 我提出了400个请求 - 每个请求一行(大约1.6 KB)

我认为最佳方法将介于中间.任何人都可以告诉我这个数据的最佳单一请求大小是什么?

谢谢.

json client-server

40
推荐指数
2
解决办法
2万
查看次数

WCF - 检查发送/接收的消息?

我有2个解决方案: - 服务器解决方案 - 客户解决方案

服务器将自己注册到我的localhost IIS:http:// localhost/MyApp /

客户端从localhost应用程序添加WCF服务(服务引用):http://localhost/MyApp/MyService.svc

当我运行客户端时,我希望能够看到来回传递的消息.我下载了Fiddler,但除非我实际使用网络浏览器,否则它似乎不想向我显示任何流量.我使用Fiddler是错误还是我应该使用另一种工具?


为了澄清,我想要做的是看到传入的实际消息.我不想对它们做任何事情,除了用自己的眼睛直观地看待它们.

我喜欢WCF服务日志工具,但我认为我没有正确的设置.我看不到实际的肥皂消息,只是收到了消息.

而且为了进一步澄清,我不关心我使用什么工具,只要我可以轻松地看到消息本身.

wcf soap client-server fiddler

38
推荐指数
3
解决办法
6万
查看次数

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

问题:我必须为每个联网客户端提供唯一ID,例如:

  • 一旦客户端软件安装在目标计算机上,它(ID)应该保持不变,并且如果软件重新安装在同一台计算机和相同的操作系统上,则应继续保持,
  • 如果在大多数情况下修改硬件配置(更换主板除外),则不应更改
  • 当安装了客户端软件的硬盘驱动器克隆到具有相同硬件配置(或尽可能相似)的另一台计算机时,客户端软件应该知道该更改.

一点点解释和一些背景故事:

这个问题基本上是古老的问题,也触及了软件拷贝保护的主题,因为这里提到了该领域中使用的一些机制.在这一点上我应该清楚,我不是在寻找一种复制保护方案.请继续阅读.:)

我正在开发一个应该在本地网络中工作的客户端 - 服务器软件.我必须解决的一个问题是识别网络中的每个唯一客户端(而不是问题),以便我可以将某些属性应用于每个特定客户端,在特定部署的生命周期中保留并强制执行这些属性.客户.

在我寻找解决方案时,我发现了以下情况:

  • Windows激活系统使用某种对硬件修改极其敏感的重型指纹识别机制,
  • 磁盘映像软件会复制所有卷ID(格式化时绑定到每个分区),以及在安装过程中,首次运行期间或以任何其他方式自定义,唯一生成的ID,严格来说属于软件本身,并存储在注册表或在硬盘上,所以很容易混淆两个.

这种问题的明显选择是找出BIOS标识符(不过100%确定这是否通过相同的主板型号是唯一的),因为这是我唯一可以依赖的不重复,通过克隆传输,并且不能改变(至少不能通过使用一些用户空间程序).其他一切都失败了,因为要么不可靠(MAC克隆,任何人?),要么太苛刻(就其对配置变化过于敏感而言).

我想问的一个子问题是,我是否正确地进行了架构方面的工作?也许有一个更好的工具来完成我必须完成的任务......

我想到的另一种方法类似于握手机制,其中服务器维护一个连接的客户端ID的内部查找表(在任何给定时刻甚至可以完全基于软件和非唯一),并告诉客户端如果在连接时提供重复的ID,则在握手期间提供不同的ID.遗憾的是,这种方法不能很好地满足在生命周期内将属性绑定到特定客户端的要求之一.

windows client-server bios uniqueidentifier hardware-id

30
推荐指数
4
解决办法
4万
查看次数

struct sockaddr_un与sockaddr

有什么struct sockaddr不同struct sockaddr_un

我知道我们在客户端 - 服务器模块中使用这些结构,用于将套接字绑定到套接字地址.我们使用一个强制转换操作符来接受struct sockaddr_un.

我想知道它们有多么不同/类似,以及为什么演员?

c sockets linux struct client-server

30
推荐指数
2
解决办法
3万
查看次数

避免缓存http响应

什么是避免任何类型的http数据缓存的权威解决方案?我们可以修改客户端和服务器 - 所以我认为我们可以在客户端和服务器之间拆分任务.

客户端可以向每个请求附加一个随机参数http://URL/path?rand=6372637263- 我的感觉是只使用这种方式它不能100%工作 - 可能有一些智能代理,可以检测到...另一方面我认为如果URL不同从前一个,代理不能简单地决定发回一些缓存的响应.

服务器上可以控制一堆HTTP头:

Expires: Tue, 03 Jul 2001 06:00:00 GMT
Last-Modified: {now} GMT
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Run Code Online (Sandbox Code Playgroud)

对此有何评论,最好的方法是什么?

caching client-server http browser-cache http-headers

30
推荐指数
2
解决办法
3万
查看次数