【问题标题】:Sending an integer array over tcp in c#在 C# 中通过 tcp 发送整数数组
【发布时间】:2016-09-10 13:40:24
【问题描述】:

这可能是一个愚蠢的问题,如果是,我很抱歉。但是我正在将一些 c 代码重写为 c# 以用作 GUI 的一部分,原始 c 程序通过以下方式将数据缓冲区向后和转发到微控制器:

n = write(sockfd, buf, sizeof(buf));

在发射器程序中和

n = read(sockfd, (void *)buf[idx]+numread,sizeof(buf[0])-numread);

在接收程序中。我试图找到上面这些函数的 c# 等效函数,但我发现的唯一一个只需要字节数据。

微控制器上的服务器运行我没有设计的软件,因此我不能简单地序列化或转换为字节等(如之前的类似问题:How to send integer array over a TCP connection in c# 然后在另一端分解,或者至少我宁愿在尝试编辑我没有编写的代码之前检查是否有解决方案。

非常感谢任何帮助!

【问题讨论】:

  • “字节数据”有什么问题?
  • 目前还不清楚您的buf 数据是什么结构。 “整数数组”通常意味着一个连续的内存块,它被组织为某个固定范围的整数,存储在字节中,具有 CPU 的本机字节序,整数之间没有填充。那么,您必须在 C# 中匹配哪些细节?
  • 服务器程序中发送和接收数据的行是 if(send(sock_client, rxbuf, sizeof(rxbuf), MSG_NOSIGNAL)
  • @user2769075 为什么你在这里发表评论而不与我的回答互动?它解决了你的问题。
  • @usr 抱歉,我一直在尝试让它与二进制阅读器一起使用,但到目前为止还没有成功,我不明白转换是如何工作的,所以我的数据不断出现垃圾。我不是故意无视你的回答,但我觉得它也没有解决我的问题,但是我已经将它标记为我以前应该做的有用。感谢您的帮助。

标签: c# arrays tcp


【解决方案1】:

您可以使用NetworkStream.Read/Write 来读取字节数组并将其写入套接字。 BinaryReader/Writer 是在此之上的抽象,可以更轻松地以某些格式编写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 2012-06-24
    • 2014-04-29
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多