标签: client-server

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

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

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

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

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

architecture client-server server-push .net-2.0

6
推荐指数
1
解决办法
1678
查看次数

Java和Nagle例证

我试图在一个简单的客户端 - 服务器程序中说明Nagle算法.但我无法弄明白,或者让它清楚地印在我身上.

在我的示例中,客户端只生成从1到1024的int并将它们发送到服务器.服务器只是将这些int转换为十六进制字符串并将它们发送回客户端.

几乎所有我改变的结果都是相同的结果.int的发送和重新发送在256个int的块中.我在两边尝试了setTcpNoDelay(true)来查看更改,但这在我的控制台中给出了相同的结果.(但不是在wireshark中,我看到服务器和客户端之间发送的数据包的数量有很大差异)但我的目标是能够在控制台中看到它,我猜测有一些ObjectOutputStream或类似的缓冲区阻止一切?

当我output = new PrintWriter(client.getOutputStream(), true)改为false (The truefalse:autoFlush- 布尔值; if true,the println,printf或者format方法将刷新输出缓冲区)时,我的服务器不再向客户端提供任何输出.

基本上我的目标是只提供服务器和/或客户端的真或假作为参数来设置TcpNoDelay,在启动时,清楚地看到控制台中输入/输出的差异.我不确定所使用的一切,所以欢迎任何帮助清除这一点.

服务器:

package Networks.Nagle;

import java.io.*;
import java.net.*;
import java.util.*;

public class NagleDemoServer
{
    private static ServerSocket serverSocket;
    private static final int PORT = 1234;

    public static void main(String[] args) throws IOException
    {
        int received = 0;
        String returned; 
        ObjectInputStream input = null;
        PrintWriter output = null;
        Socket client; …
Run Code Online (Sandbox Code Playgroud)

java tcp client-server

6
推荐指数
1
解决办法
2426
查看次数

简单游戏服务器的代码示例

我想为游戏中心构建一款iPhone游戏,目前我正在研究服务器的一部分.我通过示例学到了最好的东西,我很难找到任何简单的游戏服务器示例...

  1. 如何格式化数据并将其发送到服务器以及如何接收数据
  2. 如何验证正在发送/接收的数据以避免玩家作弊等.
  3. 游戏服务器代码如何与DB一起构建

我想使用Ruby on Rails构建游戏服务器,不过我会解决使用任何框架的任何示例,只是为了理解这些概念是如何工作的.有没有人知道任何书籍或在线资源,或者显示一些关于如何构建游戏服务器的示例代码?

我不得不认为iPhone上的大多数多人游戏都需要游戏服务器,但我似乎找不到任何讨论如何构建游戏的资源.我发现讨论构建多人游戏(包括Apple的文档)的资源说过同样的事情,"开发游戏服务器超出了本书的范围,但我们将专注于连接到这种服务器所需的客户端代码. "

非常感谢您的帮助!

编辑:关于我正在努力完成的更多细节......

我正在尝试开发一种双人(可能更多)游戏,用户在竞争中比其他玩家更快地解决难题.比赛制作将由游戏中心处理,但我需要一个游戏服务器来启动/管理游戏并将结果存储在数据库中.整个过程将类似......

  1. 游戏中心配对两名玩家
  2. 播放器数据被发送到服务器以初始化新游戏
  3. 游戏的开始由服务器同步
  4. 游戏开始,每个玩家都试图解决这个难题
  5. 当任一播放器完成时,将通知服务器
  6. 一旦两个玩家完成,服务器就会响应结果并将结果存储在服务器上.

iphone client-server

6
推荐指数
1
解决办法
1664
查看次数

Android同步适配器资源

有没有人知道任何涵盖同步适配器及其用法的书籍或在线资源(开发文档除外)?我自己努力寻找任何好的材料.

或者..有没有人知道任何用于进行远程同步服务的替代库?

谢谢

android synchronization client-server

6
推荐指数
1
解决办法
2350
查看次数

Android中的分布式应用程序

我试图对Android应用程序进行分区,以便在手机上部分执行它,部分在服务器上执行(服务器可以在其中运行模拟器).我已经读过Android不支持RMI.我想这样做就像客户端 - 服务器架构一样,模拟器在eclipse中运行.那么实现这个项目是否可行?任何想法都受到高度赞赏.

谢谢.

eclipse android client-server remote-execution

6
推荐指数
1
解决办法
1081
查看次数

Java可靠的UDP

请建议实现可靠udp的java库.它将用于游戏服务器与客户端和其他服务器进行通信.

PS也许你可以推荐一些能够更高效地完成这项任务的技术(游戏服务器)?但这必须适用于Linux.

编辑:这是一个动作类型的游戏,所以它需要尽快与服务器通信.

编辑2:我发现用于FPS游戏的Enet,但它是C++,如果我每秒多次调用它会有开销吗?

java udp client-server

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

android websocket客户端超时

谢谢阅读!

背景: 我正在为服务器开发一个Android客户端,其中需求是应用程序,需要与 WebSockets基于服务器的服务器来回连续交换消息.

实施:对于客户端,我使用weberknecht的 WebSocket Android客户端库,而服务器是Tornado基于.

问题: 目前,我祈求initWebSocketClientonCreate通过生成的AsyncTask.但是,我一直收到客户端超时异常.

Android客户端:


private void initWebSocketClient() {
        Log.e(TAG, "initWebSocketClient");
        try {
            URI url = new URI("ws://192.168.207.84:8080/");
            WebSocket websocket = new WebSocketConnection(url);

            // Register Event Handlers
            websocket.setEventHandler(new WebSocketEventHandler() {
                    public void onOpen()
                    {
                            Log.e(TAG, "--open");
                    }

                    public void onMessage(WebSocketMessage message)
                    {
                            Log.e(TAG, "--received message: " + message.getText());
                    }

                    public void onClose()
                    {
                            Log.e(TAG, "--close"); 
                    }
            });

            // Establish WebSocket Connection
            websocket.connect();

            // Send …
Run Code Online (Sandbox Code Playgroud)

android client-server tornado websocket

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

Android - 将图像文件发送到服务器数据库

用户保存三个数据: 名称,注释图像.正如您可以看到下面的代码,我成功编写代码将名称和注释发送到服务器端.但是,我不知道如何将选定的图像文件从设备发送到serverDB.

public class AddEditWishlists extends Activity {

    // Client-Server - Start //////////////////////
    // Progress Dialog
    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();
    EditText inputName;
    EditText inputDesc;

    // url to create new product
    private static String url_create_product = 
        "http://10.56.43.91/android_connect/create_product.php";


    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    // Client-Server - End //////////////////////


    //Define Variables
    private EditText inputname;
    private EditText inputnote;
    private Button upload;
    private Bitmap yourSelectedImage;
    private ImageView inputphoto;
    private Button …
Run Code Online (Sandbox Code Playgroud)

android client-server http-post image-file

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

使用TCP套接字发送/接收数据包

最近,我设法在我的PC和Raspberry Pi上创建套接字,以实现两个设备之间的通信.目前,客户端能够自动向服务器发送消息.我想知道,如果有可能修改脚本来发送tcp数据包而不是纯文本消息,因为我非常希望将来使用我的PC来控制覆盆子pi,而不需要ssh/etc.

我看了一些例子,但由于我在编写自己的脚本/代码方面没有太多经验,所以我不太清楚如何去做.如果有人可以通过解释和一些例子(如果可能的话)指导我正确的方向,我将不胜感激.

无论如何这里是我正在运行的服务器/客户端脚本:

客户:

import socket   
import sys  
import struct
import time

#main function
if __name__ == "__main__":

    if(len(sys.argv) < 2) :
        print 'Usage : python client.py hostname'
        sys.exit()

    host = sys.argv[1]
    port = 8888

#create an INET, STREAMing socket
try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
    print 'Failed to create socket'
    sys.exit()

print 'Socket Created'

try:
    remote_ip = socket.gethostbyname( host )
    s.connect((host, port))

except socket.gaierror:
    print 'Hostname could not be resolved. Exiting'
    sys.exit()

print 'Socket Connected to ' …
Run Code Online (Sandbox Code Playgroud)

python sockets tcp client-server packet

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

什么应用/游戏状态"增量压缩"技术/算法确实存在?

我有兴趣探索实时多人客户端 - 服务器游戏开发和相关算法.很多着名的多人游戏如Quake 3Half-Life 2都使用增量压缩技术来节省带宽.

服务器必须不断向所有客户端发送最新的游戏状态快照.总是发送完整快照会非常昂贵,因此服务器只发送最后一个快照和当前快照之间的差异.

......好吗,对吗?好吧,我发现很难想到的部分是如何实际计算两种游戏状态之间的差异.

游戏状态可能非常复杂,并且在堆上分配的实体通过指针相互引用,可以具有表示从架构到另一个不同的数值,以及更多.

我发现很难相信每个游戏对象类型都有一个手写的序列化/反序列化/差异计算功能.


让我们回到基础.假设我有两个状态,用位表示,我想计算它们之间的区别:

state0:  00001000100    // state at time=0
state1:  10000000101    // state at time=1
         -----------
added:   10000000001    // bits that were 0 in state0 and are 1 in state1
removed: 00001000000    // bits that were 1 in state0 and are 1 in state1
Run Code Online (Sandbox Code Playgroud)

太好了,我现在有了addedremoved diff的bitsets - 但是......

...差异的大小仍然与州的大小完全相同.而且我实际上必须通过网络发送两个差异!

一个有效的策略实际上是从那些diff位集构建某种稀疏数据结构吗?例:

// (bit index, added/removed)
// added = 0 …
Run Code Online (Sandbox Code Playgroud)

algorithm serialization network-programming client-server delta

6
推荐指数
1
解决办法
1654
查看次数