【问题标题】:C# server-client implementation with TCP使用 TCP 的 C# 服务器-客户端实现
【发布时间】:2019-10-22 16:35:34
【问题描述】:

我想创建一个简单的消息应用程序,它使用 tcp 协议进行通信,包括与多人通信。消息被发送到服务器,服务器将它们分发给所有其他客户端。目前,我已经完全运行,并且运行良好 - 在本地计算机和本地网络上,使用 ipv4 地址。

经过广泛的 Google 搜索后,我发现要从不同的网络进行通信,我需要对我的服务器进行端口转发。但是,如何使我的服务器能够在没有所有客户端端口转发的情况下与客户端通信?据我所知,并不是每个人的设备都是端口转发的。

那么,我该如何实现呢?仅使用 C# 是否可行?还是我误解了什么,实际上不需要端口转发?

感谢所有帮助。

【问题讨论】:

  • 谁投票结束这篇文章过于广泛,需要重新阅读这篇文章。
  • 您不需要端口转发。所有客户端都应该使用相同的端口号连接到服务器。您需要服务器上的应用程序软件来接收所有传入的消息并发送到其他客户端。
  • @jdweng 对不起,如果我误解了,但是如果他无法通过套接字或端口访问它们,服务器如何将其发送给所有客户端?
  • 服务器是一个监听器,它接受来自一个或多个客户端的连接。所以服务器为每个客户端都有一个套接字,它们都使用相同的端口号,但每个客户端都有不同的 IP。套接字连接具有三个属性 1) 源 IP 地址 2) 目标 IP 地址 3) 端口号。因此,每个客户端都使用相同的目标 IP 地址和端口号连接到服务器。客户端 IP 地址是连接开始的机器(源 IP)。因此,您的服务器同时向每个客户端发送消息。每个客户端都是不同的套接字。
  • @jdweng 好的,谢谢。那么如果客户端连接到服务器,他可以将信息发回给他们吗?在这种情况下,我需要端口转发服务器吗?此外,这是否适用于内置的 Tcp Listener 和 TcpClient 类?

标签: c# networking tcp


【解决方案1】:

为什么不使用 SignalR。我认为这将最适合您的问题。

【讨论】:

  • 我正在考虑这个,但我并没有真正理解如何用纯 C# 来实现它。官方网站上的教程显示它使用网页,我不打算使用这些,但是如果有办法只使用 C#,你能告诉我在哪里可以找到它吗?
  • 请参阅下面的帖子,了解使用控制台应用程序的 SignalR 的简单实现。stackoverflow.com/questions/11140164/…
  • 非常感谢,这看起来可能会有所帮助
猜你喜欢
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 2019-02-26
相关资源
最近更新 更多