标签: client-server

用于客户端存储的javascript库,具有服务器端同步

我正在寻找一个javascript库,它允许我将数据存储在客户端数据库中,并在后台自动将数据库同步回服务器的数据库

支持变量引擎的东西,就像jQuery的jQuery一样

环顾四周我能找到任何东西

javascript database client-server data-storage data-synchronization

18
推荐指数
2
解决办法
4762
查看次数

如何防止SIGPIPE或阻止服务器结束?

一个非常标准的C++ TCP服务器程序,使用pthreads,bind,listenaccept.我有一个场景,当我杀死一个连接的客户端时服务器结束(读取:崩溃).

崩溃的原因是write()文件的调用失败,因此程序收到一个SIGPIPE.我想,这会让服务器退出.

我想,"当然,未处理的信号意味着退出",所以让我们使用signal():

signal(SIGPIPE, SIG_IGN);
Run Code Online (Sandbox Code Playgroud)

因为,取自man 2 write:

EPIPE fd 连接到读取端关闭的管道或插座.当发生这种情况时,写入过程也将收到SIGPIPE信号.(因此,仅当程序捕获,阻止或忽略此信号时才会看到写入返回值.)

唉,没有.无论是在服务器线程还是客户端线程中,这似乎都没有帮助.

那么,如何阻止write()呼叫发出该信号,或者(务实)如何阻止服务器退出.


我的诊断是:

  • 服务器线程启动,绑定,监听,接受.
  • 让客户端连接(例如通过telnet)
  • 发送一个pkill telnet崩溃客户端

不需要的行为:服务器退出,在gdb

... in write () at ../sysdeps/unix/syscall-template.S:82
82      T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
Run Code Online (Sandbox Code Playgroud)

回溯:

#0  ... in write () at ../sysdeps/unix/syscall-template.S:82
#1  ... in ClientHandler::mesg(std::string) ()
#2  ... in ClientHandler::handle() ()
#3  ... in …
Run Code Online (Sandbox Code Playgroud)

c c++ sockets signals client-server

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

是否可以在同一台机器上运行套接字服务器和套接字客户端?

在java中,可以创建套接字服务器和套接字客户端,是否可以运行套接字服务器的实例,以及从同一台机器上的套接字服务器接收数据的套接字/服务器客户端?

例如,套接字服务器在端口60010上运行,套接字客户端在通过套接字连接到该端口的同一台机器上运行,或者我需要通过新机器将其添加到我的网络中?如果它在TCP/IP层上运行唯一的IP地址和端口号.

java sockets client-server localhost

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

SSL套接字连接

如何创建SSL套接字连接?

我真的需要创建一个密钥库?这个密钥库应该与我的所有客户端应用程序共享?

我用以下代码创建了一个服务器:

SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory
                    .getDefault();
SSLServerSocket sslserversocket = (SSLServerSocket) sslserversocketfactory
                    .createServerSocket(ServerProperties.getInstance()
                            .getVSSPAuthenticationPort());
Run Code Online (Sandbox Code Playgroud)

我在android上用以下代码创建了一个客户端:

SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory
                .getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(
                host, authPort);

sslsocket.startHandshake();

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                sslsocket.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(
                sslsocket.getInputStream()));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试连接时,会抛出以下错误:

javax.net.ssl.SSLHandshakeException: no cipher suites in common
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
    at sun.security.ssl.ServerHandshaker.chooseCipherSuite(ServerHandshaker.java:894)
    at sun.security.ssl.ServerHandshaker.clientHello(ServerHandshaker.java:622)
    at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:167)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
Run Code Online (Sandbox Code Playgroud)

java sockets ssl android client-server

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

c#中的多客户端,异步套接字,最佳实践?

我试图更好地理解c#中的tcp/ip套接字,因为我想挑战自己,看看我是否可以创建一个有效的MMO基础设施(游戏世界,地图,玩家等)纯粹用于教育目的,因为我没有意图成为另一个"OMGZ iz将让我的r0x0r MMORPG比魔兽更好!!!",你知道我在说什么.

无论如何,我想知道是否有人可以阐明一个人如何设计这种系统以及需要什么样的东西,以及我应该注意什么?

我最初的想法是将系统分解为单独的客户端/服务器连接,每个连接(在自己的端口上)执行特定任务,例如更新玩家/怪物位置,发送和接收聊天消息等等.处理数据更容易,因为您不总是需要在数据上放置标题以了解数据包包含哪些信息.

这是否有意义且有用,还是我只是简单地复杂化了事情?

非常感谢您的回复.

c# sockets client-server

17
推荐指数
1
解决办法
9987
查看次数

研究从服务器通知WPF客户端的解决方案

我有一个项目提出要求在服务器上发生某些事情时通知WPF桌面客户端.此外,WPF客户端的通知不会被广播(发送给每个客户端),应该发送给特定的客户端.

我想远离旧式服务器轮询.这需要尽可能接近实时.

我之前从未有过这个要求,而且我正在研究解决方案.我的第一个想法是将SignalR.NET客户端一起使用.我还没有使用过SignalR,但似乎它可能是一个解决方案.我知道这是对长轮询,服务器发送事件和WebSockets的抽象,具体取决于可用的内容.

我已经简要地阅读了有关回调和服务总线的WCF,但是对它们一无所知或这些技术是否适用于此.我可以使用之前解决过这个问题的人的一些反馈和建议.你会怎么做?

.net wpf client-server server-push signalr

16
推荐指数
2
解决办法
4655
查看次数

如何在将套接字与端点绑定之前找到可用端口?

我正在开发一个使用3个端口[TCP SOCKET .Net 4.0]的服务器 - 客户端应用程序.
因此,应用程序为用户提供了仅为主套接字设置端口的选择.但我想让服务器应用程序自动找到其他2个套接字的可用端口,以便使用主套接字连接将端口值发送到客户端.然后客户端使用接收的端口值连接到另一个套接字.

这里有一点解释:

  • 主套接字侦听可配置端口.此套接字接受客户端以启动发送/接收命令.(文件资源管理器/任务管理器/ properties/shutdown/chat)
  • 第二个套接字仅用于文件传输以传输文件,并在完成后关闭.
  • 第三个套接字仅用于接收/发送屏幕截图.

    [我知道你可能会说我应该使用相同的套接字进行文件传输和截图,但它有点复杂.我只是为每一个使用单独的套接字.]

    那么在将套接字与端点绑定之前,如何找到可用端口?这样的事情:

    int port = 10000;
    bool isAvailable = false;
    while(!isAvailable)
    {
        try
        { 
            // check if the port is available to use.
            isAvailable = true;
        }
        catch
        {
            port++;
        }
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  • c# sockets port client-server

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

    客户端 - 服务器集成测试:是否嘲笑?

    我正在使用两个应用程序进行项目:android app(客户端)和rest服务(server).我的Android应用程序消耗我的休息服务.

    这两个应用程序都是单独测试的,以确保它们按预期开展业务.在服务器测试期间,我准备请求并检查服务器响应 在客户端测试期间,我设置了一个简单的http模拟服务器,并针对不同的模拟响应测试客户端的请求.

    现在,这种技术非常有效.它给了我一种我喜欢的灵活性.我可以使用不同的测试框架和持续集成环境.但有一个弱点.在(客户端和服务器)测试用例中,我指定了相同的api.我假设,例如

    GET /foo-list.json
    
    Run Code Online (Sandbox Code Playgroud)

    将使用json返回HTTP 200

    [{
        id: 1,
        name: foo1,
    }, {
        id: 2,
        name: foo2
    }]
    
    Run Code Online (Sandbox Code Playgroud)

    所以我重复一遍.如果我更改响应格式,我的客户端测试不会失败.

    我的问题是关于测试这种情况的良好做法.如何在不牺牲独立测试灵活性的情况下进行真正的集成测试.我应该使用模拟服务器或我的休息服务的真实实例来测试客户端吗?

    请分享您的专业经验.

    testing client integration-testing client-server mocking

    16
    推荐指数
    2
    解决办法
    3911
    查看次数

    使用OpenSSL测试SSL/TLS客户端身份验证

    我正在使用TLS开发客户端/服务器应用程序.我的想法是在客户端上使用证书,以便服务器对其进行身份验证.此外,服务器上还有另一个证书,因此客户端也可以验证它是否连接到正确的服务器.

    我想首先测试并使用openssl s_server和openssl s_client来验证提议.

    到目前为止,我已经在服务器上创建了一个CA私钥,我已经创建了一个根证书.使用根证书,我签署了两个CSR,因此我获得了一个服务器证书和一个客户端证书.

    我还在客户端上安装了客户端证书+根证书,在服务器上安装了服务器证书+根证书.

    我现在想要尝试在openssl s_server和openssl s_client之间建立连接,并验证它们是否相互进行了身份验证,但我无法用如何执行此操作的文档.任何帮助或任何指导?

    一旦我完成了这个设置,下一步就是针对该服务器测试自己开发的客户端,并针对s_client测试我们自己开发的服务器.我们可以用它进行测试吗?

    谢谢

    ssl openssl client-server certificate ssl-certificate

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

    Python服务发现:通过本地网络发布服务

    我有一个"服务器"python脚本在一台本地网络机器上运行,它等待客户端连接,并传递一些工作要做.服务器和客户端代码都已编写,并按预期工作...

    问题是,这台服务器可能是从本地网络中的任何一台机器运行的,所以我不能对脚本中的地址进行硬编码......我立刻想知道我是否可以让机器做广告,告诉它是否存在,客户可以回复那个.使用标准库在Python中可行吗?不幸的是,我真的没有时间下载扭曲或龙卷风并了解它们,所以我需要一些简单的东西.

    我试图更多地考虑它,并意识到我可以有一台静态IP机器,服务器注册/取消注册,客户端可以从那里寻找服务器.我想,有点像洪流跟踪器.如果我不能轻易地做出服务广告方法,那就必须这样做.

    python sockets networking client-server service-discovery

    16
    推荐指数
    1
    解决办法
    6401
    查看次数