【问题标题】:Send Data on Client Socket without Client Requesting for it C#在没有客户端请求的情况下在客户端套接字上发送数据 C#
【发布时间】:2014-05-19 08:40:12
【问题描述】:

我想设计带有多套接字客户端的套接字服务器,其中一旦客户端连接到服务器,服务器应该开始向客户端发送数据并且客户端必须接收数据,并且当客户端断开连接时,服务器应该停止向该客户端发送数据客户。任何人都可以建议在 C# 中实现上述任务的方法。

【问题讨论】:

  • 你尝试过什么?如果你展示你的进步和你遇到的问题,它可以帮助人们回答你的问题。
  • 我已经实现了一个套接字服务器和客户端,客户端请求数据,服务器发送响应。但是我需要的解决方案是,一旦客户端连接到服务器,服务器应该开始发送客户端需要的数据的响应,这里服务器上的数据会不断变化,客户端应该在没有请求的情况下接收。

标签: c# sockets


【解决方案1】:

说实话,这听起来像是非常标准的套接字工作。 TCP 套接字只是一对流(每个方向一个)。任何一端都可以随时向另一端发送数据。原始套接字不是请求/响应,尽管显然请求/响应可以写在套接字之上。但是任何方向的临时消息也可以。

所以基本上:只使用一个套接字,当服务器想要发送一些东西时:发送它。这就是全部。如果您正在写入套接字,则可以检测到损坏的套接字,因此服务器将通过常规的套接字关闭机制或通过在发送时收到错误消息来发现断开连接或者

【讨论】:

  • 通过周期性的"Are you there" 实现handshake -> "I am still here" 在任何/两个方向上发送消息以更快地检测到断开连接(这不一定是套接字断开连接)。
  • 感谢您的回复,我已按照您的建议在循环中使用 Send 方法将数据连续发送到连接的套接字,但在这里我面临延迟问题,因为消息每 70 次通过套接字发送一次毫秒,并且在发送每条消息后延迟会继续增加。请提出一种优化方法或任何其他方法来完成任务。
猜你喜欢
  • 2017-05-10
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多