我正在编写一个通过 TCP 连接到服务器的 C# 控制台应用程序,它使用一个单独的线程来侦听来自服务器的传入消息,我希望它将它们写入控制台,同时从控制台读取消息。我能够做到这一点,但我有一个问题。
当我输入时,控制台会显示此信息,并出现一条消息:
来自服务器的消息 来自服务器的
消息
我的消息从服务器
g 到服务器
我希望它将我的消息与服务器消息分开,如下所示:
来自服务器的
消息 来自服务器的
消息 来自服务器的
消息 我的消息到服务器
如果我收到一条消息,我仍然想保留我输入的消息,但我不希望它与收到的消息混淆,我希望它在最后一行保持完整。
我可以这样做吗?如何?
当来自服务器的消息传入时,我可以将消息移到控制台的末尾吗?
语境:
我需要开发一个监视服务器来监视我们的一些应用程序(这些应用程序在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) 所以我们有一个软件,它的SQL语句编写得很糟糕,导致表中的每一行都被返回.表中有几百万行,因此这会导致严重的内存问题和客户端计算机崩溃.供应商正在为该问题创建补丁,但仍需要几周时间.与此同时,我们试图找出一种限制服务器端返回结果数量的方法,就像临时修复一样.
我没有真正的希望有一个解决方案,我环顾四周,并没有真正看到任何方法这样做,但我希望有人可能有一个想法.
先感谢您.
编辑
我忘记了一条重要的信息,我们无法访问源代码,因此我们无法在形成SQL语句的客户端更改此信息.没有真正的服务器端组件,客户端只是直接访问数据库.任何解决方案基本上都需要一个过程,触发器或某种SQL-Server 2008设置/命令.
我是Android平台的新手.我需要使用我的Android UDP客户端与UDP服务器建立连接.现在,我需要知道如何在Android中使用UDP.请指导我这样做.
我试图找到设计客户端/服务器应用程序的"良好实践".
如果有人可以推荐一些好的材料来阅读?
具体来说,您如何设计应用层协议并使其健壮,同时避免陷阱?
在某些客户端/服务器实例(如游戏)中,服务器是要采取操作的解释器,您是否可以设计协议以优雅地配合这种设计模式?
是否有为客户端/服务器应用程序设计的设计模式.我也在考虑修改生产者消费模式?
编辑:oops我意识到这个问题不能有明确的答案,所以我会给出一个深入答案的正确答案.
谢谢
我正在尝试使用简单的服务器 - 客户端应用程序进入Netty(代码见下文).
我正在努力解决两个问题:
ConfigServerHandler和.正确调用ConfigClientHandler.但是FeedbackServerHandler分别是 从不调用FeedbackClientHandler.为什么?根据文档,应该一个接一个地调用处理程序.
我想要几个处理程序.这些处理程序中的每一个仅对另一方发送的一些消息感兴趣(例如,由客户端发送,由服务器接收).
谢谢你的帮助!
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) 我在 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)
谢谢!
我们知道 html 是客户端脚本,而在 html 中使用 angularjs 框架时,我们在 html 标签中包含“ng”。我的问题是浏览器如何识别或识别带有“ng”的 html 标签。请为我的问题提供正确的解决方案题。
我是使用 MERN 堆栈的项目的一部分,需要有关如何构建系统架构图的信息。我不确定 MERN 是 MVC、分层、客户端-服务器还是其他架构模式。
我目前在我们的 github wiki 页面上有一个图表,但我的客户说这不够详细。有人可以请进来帮忙。
我想说 MVC,但由于 React 是视图,并且所有逻辑都在 Express 控制器/模型中,我不确定这是否真的是 MVC 模式。
我主要使用 C++,想要为项目实现服务器-客户端通信。虽然不太精通分布式计算,但我尝试过各种工具组合,例如 SocketIO 服务器(JS 中)+ C++ 客户端库或 IXWebSocket。我也不想在 Boost.Asio 中从头开始实现所有内容。
据我所知,uWebSockets是 C++ 中性能最高且符合标准的解决方案。问题是只有一个服务器库可用。我知道“任何”兼容的 Web 套接字实现都能够与 uWebSockets 服务器一起使用,但是: