标签: client-server

客户端应用程序在C#中在本地网络上查找服务器的最佳方式是什么?

客户端使用GenuineChannels连接到服务器(我们正在考虑切换到DotNetRemoting).我的意思是找到要连接的服务器的IP和端口号.

看起来像蛮力的方法是尝试网络上的每个IP尝试活动端口(甚至不确定是否可能)但必须有更好的方法.

c# remoting client-server service-discovery

12
推荐指数
3
解决办法
5227
查看次数

我应该如何强调测试/加载测试客户端服务器应用程序?

我开发了一个客户端 - 服务器风格,基于数据库的系统,我需要设计一种压力/负载测试系统的方法.客户不可避免地想要了解以下内容:

•服务器可以支持多少客户端?
•服务器支持多少并发搜索?
•我们可以在数据库中存储多少数据?
•等

所有这些问题的关键是响应时间.我们需要能够测量响应时间和性能如何随着新负载的引入而降低,这样我们就可以生成一些我们可以抛给客户端的漂亮图表,让他们知道给定的性能是什么样的.硬件配置.

现在我们只是把手指放在空中,并根据我们从经验中已经了解的系统做出有根据的猜测.由于产品处于更苛刻的条件下,这证明不足以满足我们未来的需求.

我被赋予了设计方法以有意义的方式获得这些答案的任务.我意识到这不是任何人都可以肯定地回答的问题,但我正在寻找有关人们如何在自己的系统上进行此类工作的建议.

需要注意的一点是,我们可以通过Python语言(SWIG提供)完全访问我们的客户端API,这比使用C++更容易使用这种工作.

所以我们去了,我把它扔到了地板上:真的很有兴趣看看你们有什么想法可以想出来!

python database client-server stress-testing load-testing

12
推荐指数
3
解决办法
9349
查看次数

AJAX响应:数据(JSON,XML)还是HTML片段?

我只是想知道AJAX响应的"理想"输出格式是什么?使用一些客户端JavaScript模板引擎将纯数据(JSON,XML)呈现到页面中?或者"按原样"呈现到页面中的HTML片段?

你的偏好是什么?为什么?

html xml ajax json client-server

12
推荐指数
2
解决办法
4146
查看次数

Node.js和客户端共享相同的脚本

使用Node.js的一个理论上的好处是可以在客户端和服务器之间共享相同的脚本.如果客户端不支持javascript,那么可以将相同的功能降级到服务器.

但是,Node.js require()方法可以自行运行.在您加载的脚本中,您可以添加内容thisexports稍后在获取脚本的对象中可用的内容:

var stuff = require('stuff');
stuff.show();
Run Code Online (Sandbox Code Playgroud)

在stuff.js中:

this.show = function() {
    return 'here is my stuff';
}
Run Code Online (Sandbox Code Playgroud)

因此,在客户端上重用此脚本时,该.show()方法将添加到window范围中.这不是我们想要的,而是我们想将它添加到自定义命名空间.

到目前为止我唯一的解决方案是(在stuff.js中):

var ns = typeof exports == 'undefined' ? (function() {
    return window['stuff'] = {};
})() : exports;

ns.show = function() {
    return 'here is my stuff';
}

delete ns; // remove ns from the global scope
Run Code Online (Sandbox Code Playgroud)

这非常有效,因为我可以调用stuff.show()服务器和客户端.但它看起来古怪.我尝试寻找解决方案,但node.js仍然很新(甚至对我来说),所以几乎没有可靠的资源.有没有人对如何解决这个问题有更好的想法?

javascript scope client-server node.js

12
推荐指数
1
解决办法
2128
查看次数

Java中的多个客户端到服务器通信程序

我写了一个服务器 - 客户端通信程序,它运行良好.

客户端模块

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

class Client {
    public static void main(String argv[]) throws Exception {
        String sentence;
        String modifiedSentence;
      while(true){
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

        Socket clientSocket = new Socket("myname.domain.com", 2343);

        DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        System.out.println("Ready");
        sentence = in.readLine();
        out.writeBytes(sentence + '\n');
        modifiedSentence = in.readLine();
        System.out.println(modifiedSentence);
       }
      clientSocket.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

服务器模块

import java.net.*;

public class Server {
    public static void main(String args[]) throws Exception {
        String clientSentence;
        String …
Run Code Online (Sandbox Code Playgroud)

java client-server

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

如何构建分布式Java应用程序?

首先,我有一个概念性的问题,"分布式"这个词是否只意味着应用程序在多台机器上运行?或者还有其他方法可以将应用程序视为分布式(例如,如果有许多独立的模块在同一台机器上进行交互,这是分布式的吗?).

其次,我想建立一个执行四种类型任务的系统,会有多个客户,每个客户都会定期运行每种类型的许多任务.例如:customer1今天将有task_type1,两天后会有task_type2,依此类推,可能会有customer2同时执行task_type1,如customer1的task_type1.即需要并发.执行任务的配置将存储在DB中,这些任务的结果也将存储在DB中.客户将使用Web浏览器(html页面)中的系统与系统交互(基本上,配置任务并查看结果).我想过使用一个休息webservice(使用JAX-RS),其中html页面将与后端通信并在后端使用线程进行并发执行.问题:

  1. 这听起来很简单,但我是朝着正确的方向前进吗?或者我应该使用其他技术或概念,例如Java Beans?

2.如果我的方法很好,我是否需要使用像JSP这样的脚本语言,或者我可以直接将html表单提交给其他URL并获得结果(例如使用JSON)?

  1. 如果我想分发应用程序,我的想法是否可行?如果不是我需要使用什么?

很抱歉有很多问题,但我对此感到很困惑.

java multithreading web-services client-server distributed-computing

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

从同一本地网络上的计算机访问虚拟主机

我正在尝试进行设置,以便我可以从计算机B访问计算机A中的虚拟主机上的网站.A和B都在同一网络上.我在Win 7上使用xampp.

因此,问题在于计算机A(服务器)在httpd-vhosts.conf文件中具有如下虚拟主机配置.

NameVirtualHost project:81

<VirtualHost project:81>

    DocumentRoot "D:/work/website"
    ServerName project:81
    <Directory "D:/work/website">
    Options Indexes FollowSymLinks Includes ExecCGI    
    AllowOverride All
    Order Allow,Deny
    Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

(使用端口81作为端口80运行IIS,但是对这些东西不太了解)

此配置在本地计算机(服务器)上正常工作.即项目:浏览器地址栏中的81开启了网站.

现在在计算机B(客户端)上,我更改了hosts文件以包含服务器的IP以及虚拟主机的名称,如: -

192.168.1.7项目

现在,当我进入项目:客户端浏览器上的81 ..它带我到服务器,但它不带我到虚拟主机目录,而是它采取到默认目录..即在我的情况下是

C:\ XAMPP\htdocs中

现在我卡住了,无法让客户端指向当前目的地.因此,任何人都可以建议我在这里做错了什么或我需要做的其他事情,以便从客户端机器访问正确的虚拟主机站点.

在此先感谢您的帮助

apache xampp networking client-server virtualhost

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

客户端 - 服务器中的JmDNS服务发现

我正在尝试使用JmDNS在我的客户端 - 服务器应用程序中启用服务发现.我完全理解服务器端的服务注册表,其代码类似于:

JmDNS jmdns = JmDNS.create(localhost);
jmdns.register(serviceInfo);
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何让我的客户端从注册的服务中检索端口号和IP地址,并使用此数据打开TCP连接.我搜索了如何使用JmDNS但没有用的例子.这里有人能给我一些基本的例子吗?或者如果有人有关于JmDNS的良好资源/教程的任何链接,他们可以提供吗?

注意:JmDNS在这里是必要的,所以我很感激只有JmDNS的答案,而不是提供替代方案.此外,我已经广泛地查看了JmDNS API,但仍然无法弄明白,所以请不要将文档链接作为资源发布.

谢谢.

java network-programming client-server service-discovery jmdns

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

浏览器未显示X-Forwarded-For标头的原因

注意:请阅读完整的问题

我试图理解为什么每次请求页面时浏览器都没有向我显示任何X-Forwarded-For标头

BTW这里是我的请求标题看起来像

Request URL:http://localhost:3000/users/sign_in
Request Method:GET
Status Code:304 Not Modified
Run Code Online (Sandbox Code Playgroud)

请求标题:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie:undefined=0; poasterapp=s%3A4faaa6b1723e7c6fbd949083532c52598652547b.sNX%2BKOEed2TEQkQN7I7K5lgpoHMRpwerKFvUegMnTVI; _minerva_session=BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJWEyM2Q0ZTViMWEyODBiYmFmODEwZTJhZmUwNWU5ODk5BjsAVEkiE3VzZXJfcmV0dXJuX3RvBjsARiIGL0kiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsGOgphbGVydFQ6DEBjbG9zZWRGOg1AZmxhc2hlc3sGOwpJIgAGOwBUOglAbm93MEkiEF9jc3JmX3Rva2VuBjsARkkiMUN0Uk56SXU0dUdIdzgwcFZJM3R0L2N4dlovRllTSGRrQ2o1R0VVanhIaVk9BjsARg%3D%3D--6bd89ce9d29e9bdcf56573f9a153dc663a8fe755
Host:localhost:3000
If-None-Match:"785d34e3998360353567fc710af123fb"
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

响应标题(不需要但仍然)

Cache-Control:max-age=0, private, must-revalidate
Connection:close
ETag:"785d34e3998360353567fc710af123fb"
Server:thin 1.5.0 codename Knife
Set-Cookie:_minerva_session=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJWEyM2Q0ZTViMWEyODBiYmFmODEwZTJhZmUwNWU5ODk5BjsAVEkiE3VzZXJfcmV0dXJuX3RvBjsARiIGL0kiEF9jc3JmX3Rva2VuBjsARkkiMUN0Uk56SXU0dUdIdzgwcFZJM3R0L2N4dlovRllTSGRrQ2o1R0VVanhIaVk9BjsARg%3D%3D--dfb3ce9f5c97463cfcd0229a133654e6cc606d98; path=/; HttpOnly
X-Request-Id:41a6f3062dc8bc36b7b3eae71dc5075d
X-Runtime:89.238257
X-UA-Compatible:IE=Edge
Run Code Online (Sandbox Code Playgroud)

现在如上所述,我在请求标头中看不到任何 X-Forwarded-For

阅读X-Forwarded-For维基页面让我觉得,它是由缓存服务器完成的(在我的情况下,我相信是我的ISP提供商)so am I safe to believe that the **X-Forwarded-For** headers is something that is added at the caching …

browser client-server http http-headers

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

如何在asyncio上重新连接套接字?

我想在app.py上创建两个带有asyncio的协议(TcpClient和UdpServer),其中TcpClient将与server.py和UdpServer作为UDP服务器建立持久连接:

我需要的是:
a)两种通信协议:相互调用方法.这只是在第一个连接上工作.如果TcpClient重新连接,则无法再次发送字符串"send to tcp".来自UdpServer.我检查print(self)并且TcpClient创建一个新实例,旧的仍然存在但没有连接,但我不知道如何重构.我认为我以错误的方式使用asyncio.
b)当TcpClient与server.py断开连接时,等待5s并再次尝试重新连接,依此类推.我试图使用call_later()asyncio,但我认为有一种本地方式来做到这一点,而不是一种技巧.
c)当我启动app.py并且如果TcpClient无法连接时,我想尝试在5s后重新连接,依此类推.我不知道该怎么做.

这是我的app.py server.py的示例测试.server.py仅用于测试 - 这将是另一种语言.

只是说我尝试了什么:
1)当我启动app.py并且server.py关闭时,app.py不会重试.
2)当app.py连接到server.py并且服务器关闭并快速启动时,TcpClient重新连接,但我无法在新实例上相互连接方法并发送字符串"send to tcp".到server.py,只是旧的,没有更多的连接.
3)如果我用asyncio.async(),而不是run_until_complete()我不能打电话相互协议的方法.

我把app.py和server.py放在这里,所以你可以复制并运行测试.

ncat localhost 9000 -u -v用来发送字符串"send to tcp.".此字符串需要打印在UdpServer类上,并传递给TcpClient类上的方法send_data_to_tcp,此方法将字符串发送到server.py.< - 首次重新连接tcpClient后,这不起作用.

我正在使用Python 3.4.0.

非常感谢.

app.py:

import asyncio

#TCP client
class TcpClient(asyncio.Protocol):
    message = 'Testing'

    def connection_made(self, transport):
        self.transport = transport
        self.transport.write(self.message.encode())
        print('data sent: {}'.format(self.message))
        server_udp[1].tcp_client_connected()


    def data_received(self, data):
        self.data = format(data.decode())
        print('data received: {}'.format(data.decode()))
        if self.data == 'Testing':
            server_udp[1].send_data_to_udp(self.data)

    def send_data_to_tcp(self, data):
        self.transport.write(data.encode())

    def …
Run Code Online (Sandbox Code Playgroud)

python sockets client-server python-3.4 python-asyncio

11
推荐指数
1
解决办法
7756
查看次数