【问题标题】:Send Continuously Data Through the Socket C# [closed]通过套接字 C# 连续发送数据 [关闭]
【发布时间】:2017-11-30 14:26:52
【问题描述】:

我已经为我的问题搜索了超过 2 周的样本或其他任何内容。 找到了一些主题和示例,但无法使用它们...
这是问题所在:我有一个服务器客户端应用程序,服务器必须一直监听它,客户端不断向服务器发送图像。
我已经完成了发送并完成,这意味着客户端将 1 个图像发送到服务器,服务器接收图像并且套接字将被关闭。
但我想连续向服务器发送图像...
发现这个问题:Can a TCP c# client receive and send continuously/consecutively without sleep?
但不能使用它们和样本。
我知道基本的 TCP 套接字编程和线程编程基础,但无法实现。
对不起,我的英语不好 !
=====编辑
实际上,一个计时器以 1 秒的间隔捕获屏幕截图,并将这些捕获的图像经过压缩处理后发送到服务器。
它不断发送(Just Sending)。
有什么样品或我可以使用的东西吗?
谢谢。

【问题讨论】:

  • " 服务器收到图片,socket 会关闭。" 为什么socket 会关闭?您可以控制服务器代码吗?此外,如果您不提供您编写的重要代码,我们将无法真正帮助您
  • 你告诉我们你不能做什么。您没有告诉我们为什么问题是什么。我们无法回答任何问题。

标签: c# sockets


【解决方案1】:

在套接字上发送单个消息时,您只需发送有效负载并关闭 - 接收器只需读取,直到套接字报告它已关闭并且他们将收到消息;很好很简单,但它不能扩展到多条消息。

您不能只使用数据包布局,因为 TCP 是作为 stream 协议而不是 packet 协议实现的;您接收数据的方式不需要匹配(就数据包而言)它的发送方式。

因此,要在 TCP 套接字上发送多条消息,您需要实现某种框架 机制。可以使用任意数量的框架机制。一个非常简单的机制可能是发送以下序列:

  • 长度(4 字节,little-endian 32 位整数)
  • 有效负载({length} 个字节)
  • 长度(4 字节,little-endian 32 位整数)
  • 有效负载({length} 个字节)
  • 长度(4 字节,little-endian 32 位整数)
  • 有效负载({length} 个字节)
  • 长度(4 字节,little-endian 32 位整数)
  • 有效负载({length} 个字节)

同样,接收方会缓冲 4 个字节,解释长度,然后将 那么多 个字节作为帧读取;冲洗,重复。

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多