标签: client-server

C# 控制台:边读边写并保留结构

我正在编写一个通过 TCP 连接到服务器的 C# 控制台应用程序,它使用一个单独的线程来侦听来自服务器的传入消息,我希望它将它们写入控制台,同时从控制台读取消息。我能够做到这一点,但我有一个问题。

当我输入时,控制台会显示此信息,并出现一条消息:

来自服务器的消息 来自服务器的
消息
我的消息从服务器
g 到服务器

我希望它将我的消息与服务器消息分开,如下所示:

来自服务器的
消息 来自服务器的
消息 来自服务器的
消息 我的消息到服务器

如果我收到一条消息,我仍然想保留我输入的消息,但我不希望它与收到的消息混淆,我希望它在最后一行保持完整。

我可以这样做吗?如何?

当来自服务器的消息传入时,我可以将消息移到控制台的末尾吗?

c# console multithreading client-server

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

WCF:从服务器访问服务实例

语境:

我需要开发一个监视服务器来监视我们的一些应用程序(这些应用程序在c#中).所以我决定使用WCF开发系统,这似乎适合我的需求.

这些应用程序在启动时必须将自己注册到监视服务器.之后,监视服务器可以调用这些应用程序的Start或Stop方法.

一切都在同一台机器上完全执行,无需远程执行任何操作.

所以我开发了一个很好的原型,一切正常.每个应用程序将自己注册到监视服务器.

题:

ApplicationRegistrationService(请参阅下面的代码)是监视服务的实现,由于ServiceBehavior属性,它是一个单例实例.

这是我的问题:我想访问ApplicationRegistrationService每个示例的内容,从我的服务器(ConsoleMonitoringServer在示例中)连接的应用程序的数量.但是,我不知道如何实现这一目标.

我是否需要在我的服务器中创建一个通道,就像我在客户端(ConsoleClient)中所做的那样,或者它是否有更好的方法来实现这一目标?

码:

出于此问题的目的,代码非常简化:

//The callback contract interface
public interface IApplicationAction
{
    [OperationContract(IsOneWay = true)]
    void Stop();

    [OperationContract(IsOneWay = true)]
    void Start();
}

[ServiceContract(SessionMode = SessionMode.Required, 
    CallbackContract = typeof(IApplicationAction))]
public interface IApplicationRegistration
{
    [OperationContract]
    void Register(Guid guid, string name);

    [OperationContract]
    void Unregister(Guid guid);
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
    ConcurrencyMode = ConcurrencyMode.Multiple)]
public class ApplicationRegistrationService : IApplicationRegistration
{
    //IApplicationRegistration Implementation
}

public class ApplicationAction : IApplicationAction …
Run Code Online (Sandbox Code Playgroud)

c# wcf client-server

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

限制服务器端返回的行数(强制限制)

所以我们有一个软件,它的SQL语句编写得很糟糕,导致表中的每一行都被返回.表中有几百万行,因此这会导致严重的内存问题和客户端计算机崩溃.供应商正在为该问题创建补丁,但仍需要几周时间.与此同时,我们试图找出一种限制服务器端返回结果数量的方法,就像临时修复一样.

我没有真正的希望有一个解决方案,我环顾四周,并没有真正看到任何方法这样做,但我希望有人可能有一个想法.

先感谢您.

编辑

我忘记了一条重要的信息,我们无法访问源代码,因此我们无法在形成SQL语句的客户端更改此信息.没有真正的服务器端组件,客户端只是直接访问数据库.任何解决方案基本上都需要一个过程,触发器或某种SQL-Server 2008设置/命令.

sql-server client-server sql-server-2008

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

如何在Android中使用UDP?

我是Android平台的新手.我需要使用我的Android UDP客户端与UDP服务器建立连接.现在,我需要知道如何在Android中使用UDP.请指导我这样做.

client android udp client-server

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

Client Server应用程序设计模式和协议

我试图找到设计客户端/服务器应用程序的"良好实践".

如果有人可以推荐一些好的材料来阅读?

具体来说,您如何设计应用层协议并使其健壮,同时避免陷阱?

在某些客户端/服务器实例(如游戏)中,服务器是要采取操作的解释器,您是否可以设计协议以优雅地配合这种设计模式?

是否有为客户端/服务器应用程序设计的设计模式.我也在考虑修改生产者消费模式?

编辑:oops我意识到这个问题不能有明确的答案,所以我会给出一个深入答案的正确答案.

谢谢

design-patterns client-server network-protocols

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

Netty Handler没有打电话

我正在尝试使用简单的服务器 - 客户端应用程序进入Netty(代码见下文).

我正在努力解决两个问题:

  1. ConfigServerHandler和.正确调用ConfigClientHandler.但是FeedbackServerHandler分别是 从不调用FeedbackClientHandler.为什么?根据文档,应该一个接一个地调用处理程序.

  2. 我想要几个处理程序.这些处理程序中的每一个仅对另一方发送的一些消息感兴趣(例如,由客户端发送,由服务器接收).

    • 我应该在处理程序(channelRead)收到消息后过滤消息吗?我如何区分不同的字符串?对于不同的对象,通过解析它们应该非常容易.
    • 是否可以为SocketChannel定义不同的ChannelPipelines?
    • 更进一步?

谢谢你的帮助!

KJ

这是服务器的创建方式:

public void run() throws Exception {

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup)
         .channel(NioServerSocketChannel.class)
         .handler(new LoggingHandler(LogLevel.INFO))
         .childHandler(new ChannelInitializer<SocketChannel>() {
             @Override
             public void initChannel(SocketChannel ch) throws Exception {
                 ChannelPipeline p = ch.pipeline();
                 p.addLast(
                     new ObjectEncoder(),
                     new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
                     new ConfigServerHandler(),
                     new FeedbackServerHandler());
             }
         });
      b.bind(mPort).sync().channel().closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}
Run Code Online (Sandbox Code Playgroud)

其中一个Handler类(FeedbackServerHandler完全相同但解析为Integer):

public class ConfigServerHandler extends …
Run Code Online (Sandbox Code Playgroud)

java client-server netty

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

循环时recv()函数如何工作?

我在 MSDN 中读到有关 send() 和 receive() 函数的内容,有一点我不确定我是否理解。

例如,如果我发送一个大小为 256 的缓冲区,并接收前 5 个字节,那么下次我调用 recv() 函数时,它将指向第 6 个字节并从那里获取数据?

例如 :

char buff[256];
memcpy(buff,"hello world",12);
send(sockfd, buffer, 100) //sending 100 bytes

//server side:
char buff[256];
recv(sockfd, buff, 5) // now buffer contains : "Hello"?
recv(socfd, buff,5) // now I ovveride the data and the buffer contains "World"?
Run Code Online (Sandbox Code Playgroud)

谢谢!

c sockets client-server recv server

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

浏览器如何识别html中的angularjs标签?

我们知道 html 是客户端脚本,而在 html 中使用 angularjs 框架时,我们在 html 标签中包含“ng”。我的问题是浏览器如何识别或识别带有“ng”的 html 标签。请为我的问题提供正确的解决方案题。

html javascript client-server angularjs

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

MERN 遵循什么类型的架构/设计模式?

我是使用 MERN 堆栈的项目的一部分,需要有关如何构建系统架构图的信息。我不确定 MERN 是 MVC、分层、客户端-服务器还是其他架构模式。

我目前在我们的 github wiki 页面上有一个图表,但我的客户说这不够详细。有人可以请进来帮忙。

我想说 MVC,但由于 React 是视图,并且所有逻辑都在 Express 控制器/模型中,我不确定这是否真的是 MVC 模式。

model-view-controller client-server node.js mern

6
推荐指数
0
解决办法
1369
查看次数

uWebSockets 客户端

我主要使用 C++,想要为项目实现服务器-客户端通信。虽然不太精通分布式计算,但我尝试过各种工具组合,例如 SocketIO 服务器(JS 中)+ C++ 客户端库或 IXWebSocket。我也不想在 Boost.Asio 中从头开始实现所有内容。

据我所知,uWebSockets是 C++ 中性能最高且符合标准的解决方案。问题是只有一个服务器库可用。我知道“任何”兼容的 Web 套接字实现都能够与 uWebSockets 服务器一起使用,但是:

  • 有规范的方法吗?在这种情况下,人们作为客户端使用什么?我看到该仓库有大约 12k 颗星,所以这一定非常简单。我再次想使用C++ 客户端,而不是 JS 中的浏览器实现。
  • 如果定制解决方案合适,我应该如何去做?

c++ client-server uwebsockets

6
推荐指数
0
解决办法
1892
查看次数