标签: client-server

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

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

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

问题是,当我在服务器计算中使用默认的20ms滴答延迟时,当客户端移动相当长的距离时,当它停止时会有明显的向前倾斜.如果我将延迟略微增加到22ms,在我的本地网络上一切都运行得非常顺利,但在其他地方,倾斜仍然存在.经过一番实验后,我注意到所需的额外延迟几乎与客户端和服务器之间的延迟有关.我甚至把它煮成了一个非常好的公式:延迟= 20 +(延迟/ 10).

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

.net c# sockets latency client-server

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

您使用什么来进行客户端与GWT的服务器通信?

GWT RPC是专有的,但看起来很稳固,由谷歌支持模式,我看过的每本书和教程都提到过.它真的是GWT客户端/服务器通信的选择吗?您是否使用它,如果不是为什么以及您选择了什么?我假设我有通用的服务器应用程序代码,可以容纳RPC,EJB,Web服务/ SOAP,REST等.

奖金问题:我需要注意GWT RPC的任何安全问题?

java ajax gwt rpc client-server

7
推荐指数
1
解决办法
2558
查看次数

使用中央服务器的操作转换,如何与多个客户端进行实时协作?

我刚刚在Jupiter Collaboration System中读完了高延迟,低带宽窗口,我大部分都遵循了所有内容,直到第6部分:全局一致性.本部分描述了如何扩展本文中描述的系统以适应连接到服务器的多个客户端.但是,解释非常简短,并且基本上说如果中央服务器仅将客户端消息转发给所有其他客户端,则系统将起作用.我真的不明白这是如何工作的.在发送给所有其他客户端的消息中将发送什么状态向量?服务器是否为每个客户端维护单独的状态向量?它是否为每个客户端在本地维护单独的小部件副本?

我能想到的一个简单示例就是这样的设置:想象客户端A,服务器和客户端B,客户端A和客户端B都连接到服务器.首先,这三个都有状态对象"ABCD".然后,客户端A在服务器发送消息"在位置0插入字符G"的同时发送消息"在位置0插入字符F".似乎只是将客户端A的消息中继到客户端B,反之亦然,实际上并不处理这种情况.那么服务器究竟做了什么呢?

collaboration client-server real-time

7
推荐指数
1
解决办法
1050
查看次数

带有applet的Java客户端 - 服务器游戏

我必须用Java实现一个简单的游客客户端 - 服务器游戏.不幸的是,我刚刚开始使用网络编程,并且在选择合适的解决方案时遇到了一些问题.

让我们假设我正在创建一个国际象棋游戏,其中两个客户端可以连接到服务器,使用他们的用户名和密码进行身份验证和播放.必须将客户端编程为applet(瘦客户端),但我不知道应该将其用作服务器.

我的意思是,我已经阅读了几个不同的可能性,如RMI,套接字,servlet,但仍然不知道哪个适合我的需求.我有点困惑,因为我不完全理解如何进行沟通.

我应该创建一个可以在服务器上一直运行并等待播放器的可执行服务器吗?在我看来,这似乎是一种奇怪的方式.或者有没有更简单的方法,例如,我可以创建一个servlet并将其放在Tomcat服务器上,以便只有有任何玩家才能运行服务器吗?该servlet是否可以与applet(客户端)通信,反之亦然?*

我真的很感激一些提示.

java applet client-server

7
推荐指数
1
解决办法
1301
查看次数

将Sage Line 50与Windows应用程序集成

我必须将C#Windows应用程序与Sage Line 50集成.(将所有发票详细信息从应用程序发送到Sage).

我搜索了Google以及它所说的集成Sage Line 50的大多数地方,我们需要使用Sage开发工具包(SDK).但它不是免费的.

我们已经购买了Sage Line 50.但现在我想知道如何将我们的会计软件与Sage Line 50相结合?

我找到了这个网址

http://crmsageconnector.codeplex.com/
Run Code Online (Sandbox Code Playgroud)

他们使用Microsoft Dynamics CRM Connector for Sage Line 50来同步数据以及数据迁移.

c# asp.net client-server sage-line-50 sage-erp

7
推荐指数
1
解决办法
9549
查看次数

设置TCP/IP客户端和服务器以通过网络进行通信

我正在尝试学习一些关于套接字编程的知识,我偶然发现了TcpListener和TcpClient,因为我读到它们对于初学者来说稍微容易一些.我想要完成的基本要点是拥有一个小型表格,可以在我的笔记本电脑和同一网络上的另一台笔记本电脑上运行,并让他们能够进行通信,即相互发送一串文字.有了这个,我希望能进一步发展:)

到目前为止,我已经使用msdn和互联网上的各种指南创建了客户端和服务器程序.我可以让他们在一台笔记本电脑上运行时进行通信,但是当我将客户端移动到另一台笔记本电脑时,我无处可去.我认为我的主要问题是我不太了解客户端如何找到服务器IP,因为我认为我可以对其进行硬编码,但是当我再次回来时,我确信IP会发生变化.有没有办法让两者以更动态的方式连接以包含不断变化的IP?我目前的客户代码:

    public void msg(string mesg)
    {
        lstProgress.Items.Add(">> " + mesg);
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        string message = "Test";
        try
        {
            // Create a TcpClient.
            // Note, for this client to work you need to have a TcpServer 
            // connected to the same address as specified by the server, port
            // combination.
            Int32 port = 1333;
            TcpClient client = new TcpClient(<not sure>, port); //Unsure of IP to use.

            // Translate the passed message into ASCII and …
Run Code Online (Sandbox Code Playgroud)

.net c# tcp client-server winforms

7
推荐指数
1
解决办法
1万
查看次数

适用于Linux的灵活IPC解决方案?

我正在用Python编写一个程序,我正在考虑使用本地客户端 - 服务器模型,但我正在努力找出服务器与客户端通信的最佳方式.一个简单的罐装解决方案是最好的 - 我不打算重新发明轮子.以下是我对此计划的需求:

  • 在Linux上运行
  • 服务器和客户端在同一系统上,因此我不需要通过网络.
  • 延迟不太可能让交互式用户烦恼.
  • 多个客户端可以连接到同一服务器.
  • 客户端独立于服务器启动,可以随时连接/断开连接.
  • 客户数量可以测量数十个; 我不需要非常高.
  • 客户可以有几种不同的风格:
    1. 流阅读器 - 读取连续的数据流(实际上,这是所有文本).
    2. 状态读者 - 读取一些状态信息,每隔一段时间更新一次.
    3. 写入者 - 将一些数据发送到服务器,每次都会收到一些响应.

客户类型1似乎很简单; 这是一个单向的哑管.客户端类型2更有趣.我想避免简单地轮询服务器以定期检查新数据,因为这会为用户增加明显的延迟.当状态信息被更新时,服务器需要某种方式向所有且仅向相关客户端发信号,以便客户端可以从服务器接收更新的状态.客户端类型3必须是双向的; 它会将用户提供的数据发送到服务器,并在每次发送后收到某种响应.

我查看了Python的IPC页面(http://docs.python.org/2/library/ipc.html),但我认为这些解决方案中的任何一个都不适合我的需求.子进程模块是完全不合适的,其他一切都比我想要的低一些.

类似的问题Efficient Python to Python IPC并不完全相同; 我不需要传输Python对象,我并不特别担心我拥有的客户端数量的CPU效率,我只关心Linux,而且无论如何这个问题的答案对我都没有帮助.

更新:

我不能接受只是指向框架/库/模块/工具的答案,而不实际解释它如何用于我的三种不同的服务器 - 客户端关系.如果你说,"所有这一切都可以通过命名管道完成!" 我不得不问"怎么样?" 代码片段是理想的,但对解决方案的高级描述也可以起作用.

python linux client-server ipc

7
推荐指数
1
解决办法
1090
查看次数

如何在android上排队服务器调度的数据

我正在开发一个带有电子邮件功能的Android应用程序.我希望我的用户能够在飞行模式下撰写和发送电子邮件.为此,我需要某种队列,可以检查是否有网络和发送等.我想这已经完成了100次.但我不确定为什么我的搜索量不会太多.有谁知道我可以用来完成这个的库或git项目?如果没有,有谁知道如何做到这一点?

我相信它被称为Queue and send pattern.

更新

我正在就这个问题开始赏金.我希望的是一个不使用SMS的工作示例.对于我的特殊情况,我正在开发一个Appengine Connected Android项目.客户端需要将数据(字符串,位图等在特定的POJO下称为Dog)发送到服务器.我希望能够以某种方式排队这些数据.我可以使用Gson将数据保存到文件等.最重要的是我需要能够检查网络.当有网络时,我将队列出列到服务器.如果没有网络,我会一直保存到队列中.

我的队列可以是Queue<Dog>,这里Dog是我的类字段,诸如Bitmap(或路径图像), String,long等等.

我正在寻找一个有效的例子.它可以非常简单,但示例必须有效.一个git zip会很棒.对于这个问题,我放弃了近一半的积分.

class Dog{
   String dogname;
   String pathToImage;
   int dogAge;
   //etc.
}

//Design pattern for sending Dog to server
0) Unmarshall queue from file using Gson
1) Add dog to queue
2) If there is network, loop through queue and send data to server
3) if there is no network save queue to file

//Ideally, as soon as …
Run Code Online (Sandbox Code Playgroud)

java networking android client-server

7
推荐指数
1
解决办法
2316
查看次数

如何接受多个客户端到TCP服务器?

我目前有一个TCP服务器设置,可以接受来自客户端的连接并回显客户端输入的任何内容.如何让多个客户端连接到服务器并将其输入发送到所有客户端?

看来我应该分叉,但我不完全确定如何......

在服务器上,我应该放置一个从accept(或listen?)开始的无限循环,当有新连接时它会分叉吗?然后在子进程中,我将不得不从先前的进程关闭套接字并连接到新的进程,但我再次不确定.

关于forks和socket操作,伪代码会是什么样子?我猜:

while(1) //before connection or accept?

pid = fork()

if(pid==0)
  // open socket from client
  // run the rest of the code 
  // end process when client disconnects
else
  // close socket from client
Run Code Online (Sandbox Code Playgroud)

c sockets tcp client-server

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

使用Raspberry Pi中的OpenCV和套接字通过TCP发送视频

我一直在尝试将我的客户端(Raspberry Pi)的实时视频帧发送到笔记本电脑上托管的服务器.这两个设备都连接到同一网络.

Server.py

import socket
import sys
import cv2
import pickle
import numpy as np
import struct

HOST = '192.168.1.3'
PORT = 8083

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'

s.bind((HOST, PORT))
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'

conn, addr = s.accept()

data = ""
payload_size = struct.calcsize("L")

while True:
    while len(data) < payload_size:
        data += conn.recv(4096)
    packed_msg_size = data[:payload_size]

    data = data[payload_size:]
    msg_size = struct.unpack("L", packed_msg_size)[0]

    while len(data) < msg_size:
        data += conn.recv(4096)
    frame_data = data[:msg_size]
    data = …
Run Code Online (Sandbox Code Playgroud)

python sockets opencv client-server raspberry-pi

7
推荐指数
1
解决办法
7989
查看次数