Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将消息从服务器发送到客户端c#_C#_Server_Client - Fatal编程技术网

将消息从服务器发送到客户端c#

将消息从服务器发送到客户端c#,c#,server,client,C#,Server,Client,我在c#中创建了一个服务器客户端应用程序。我设法将消息从客户端发送到服务器并读取它们,但我不知道如何将消息从服务器发送回客户端 这是我的服务器: 这是我的客户: 有人知道如何正确地从服务器向客户端发送消息并在客户端读取吗?如果您想使用当前使用的代码,您只需要在“服务器”和“客户端”计算机上同时实现服务器和客户端角色。然后,当您希望“服务器”计算机发送时,它将充当客户端角色,并作为服务器角色发送到您的“客户端”计算机。您将需要两台计算机同时侦听来自另一台计算机的消息。我建议他们也在不同的端口上

我在c#中创建了一个服务器客户端应用程序。我设法将消息从客户端发送到服务器并读取它们,但我不知道如何将消息从服务器发送回客户端

这是我的服务器:

这是我的客户:

有人知道如何正确地从服务器向客户端发送消息并在客户端读取吗?

如果您想使用当前使用的代码,您只需要在“服务器”和“客户端”计算机上同时实现服务器和客户端角色。然后,当您希望“服务器”计算机发送时,它将充当客户端角色,并作为服务器角色发送到您的“客户端”计算机。您将需要两台计算机同时侦听来自另一台计算机的消息。我建议他们也在不同的端口上侦听,这样您就不必对代码进行超出需要的修改。根据Tobias的评论,可能会导致更复杂的问题,这就是为什么我建议使用SignalR,但这不是这个问题的答案,它是一种替代方法

如果您不介意使用一个新的代码库,我强烈推荐探索的一个解决方案是Signal。SignalR是一种允许“推送”通知的技术,可以让您非常轻松地完成目标。下面是一个非常简单的例子:

这将允许您轻松调用消息,如下所示:

await _connection.Send(new { Type = "sendToMe", Content = "Hello World!" });
是的,有很多

这里有一个链接到。这里概述了使用SignalR执行此操作的另一种方法以及OWIN自托管方法:

如果要使用当前使用的代码,只需在“服务器”和“客户端”计算机上同时实现服务器和客户端角色。然后,当您希望“服务器”计算机发送时,它将充当客户端角色,并作为服务器角色发送到您的“客户端”计算机。您将需要两台计算机同时侦听来自另一台计算机的消息。我建议他们也在不同的端口上侦听,这样您就不必对代码进行超出需要的修改。根据Tobias的评论,可能会导致更复杂的问题,这就是为什么我建议使用SignalR,但这不是这个问题的答案,它是一种替代方法

如果您不介意使用一个新的代码库,我强烈推荐探索的一个解决方案是Signal。SignalR是一种允许“推送”通知的技术,可以让您非常轻松地完成目标。下面是一个非常简单的例子:

这将允许您轻松调用消息,如下所示:

await _connection.Send(new { Type = "sendToMe", Content = "Hello World!" });
是的,有很多

这里有一个链接到。这里概述了使用SignalR执行此操作的另一种方法以及OWIN自托管方法:

当服务器(TcpListener)接受来自客户端(TcpClient)的传入连接时,它将创建服务器端TcpClient。看

所以您将有两个:一个是在客户机程序中创建的,另一个是由TcpListener自动创建的

只需使用TcpClient.GetStream()获取两者上的底层网络流,就可以使用NetworkStream.Read()和.Write()进行通信。就这样

对于测试和调试网络连接,我建议使用HWGroup Hercules和SysInternals TcpView。

当服务器(TcpListener)接受来自客户端(TcpClient)的传入连接时,它将创建服务器端TcpClient。看

所以您将有两个:一个是在客户机程序中创建的,另一个是由TcpListener自动创建的

只需使用TcpClient.GetStream()获取两者上的底层网络流,就可以使用NetworkStream.Read()和.Write()进行通信。就这样


对于测试和调试网络连接,我建议使用HWGroup Hercules和SysInternals TcpView。

首先,客户端必须连接到服务器。然后让服务器写入流,让客户端从流中读取。它与您已有的没有太大区别。请尝试以下操作:listener.Server.send您可以使用与从客户端发送到服务器完全相同的方式从服务器向客户端发送消息。不要关上插座。确保您阅读了可用的参考资料,包括MSDN示例和非常有用的文档。它是为Winsock程序员在.NET之前编写的,但是.NET API只是Winsock之上的一层薄薄的API,并且那里的大多数建议仍然适用。首先,客户端必须连接到服务器。然后让服务器写入流,让客户端从流中读取。它与您已有的没有太大区别。请尝试以下操作:listener.Server.send您可以使用与从客户端发送到服务器完全相同的方式从服务器向客户端发送消息。不要关上插座。确保您阅读了可用的参考资料,包括MSDN示例和非常有用的文档。它是为Winsock程序员在.NET之前编写的,但是.NET API只是Winsock之上的一层薄薄的层,而且那里的大多数建议仍然适用。在服务器和客户端上同时使用不是一个好主意,除非双方都需要能够启动通信。一台服务器可以轻松地与一台客户机通信,反之亦然。最好是正确地做,而不是把问题加倍。让服务器和客户端同时存在不是一个好主意,除非双方都需要能够启动通信。一台服务器可以轻松地与一台客户机通信,反之亦然。与其把问题翻一番,不如把它做好。
await _connection.Send(new { Type = "sendToMe", Content = "Hello World!" });