通过套接字C#连续发送数据

时间:2017-11-30 14:26:53

标签: c# sockets

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  • length(4字节,little-endian 32位整数)
  • payload({length} bytes)
  • length(4字节,little-endian 32位整数)
  • payload({length} bytes)
  • length(4字节,little-endian 32位整数)
  • payload({length} bytes)
  • length(4字节,little-endian 32位整数)
  • payload({length} bytes)

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

相关问题