【问题标题】:C# Handle Received data of Multiple TCP clients on TCP Server by displaying them into DatagridC# 通过将多个 TCP 客户端的接收数据显示到 Datagrid 中来处理 TCP 服务器上的多个 TCP 客户端的接收数据
【发布时间】:2015-03-18 04:52:33
【问题描述】:

我开发了一个基于 C# 的 TCP 服务器 GUI 应用程序,它接受来自多个 TCP 客户端的数据。

我从 TCP 客户端接收的数据是 32 位数据。在我的应用程序中,多个 TCP 客户端数据如下所示:

00012331100025123000124510321562(来自 1 个客户)

01112563110002512456012451032125等等……

现在我希望首先将 TCP 客户端的这些数据解析为 4 位,并将其显示在(比如说)数据网格的 8 列(32/4=8)中,因为每个 4 位代表 TCP 客户端的某些特征。同样的事情应该适用于数据网格第二行上的下一个 TCP 客户端。

你能给我一些建议或例子吗?任何帮助,将不胜感激。提前谢谢你。

这是我从多个 TCP 客户端接收数据的代码。

void m_Terminal_MessageRecived(Socket socket, byte[] buffer)
        {
            string message = ConvertBytesToString(buffer, buffer.Length);

            PublishMessage(listMessages, string.Format("Sockets: {0}", message));

            // Send Echo
           // m_ServerTerminal.DistributeMessage(buffer);
        }


        private string ConvertBytesToString(byte[] bytes, int iRx)
        {
            char[] chars = new char[iRx + 1];
            System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
            d.GetChars(bytes, 0, iRx, chars, 0);
            string szData = new string(chars);

            return szData;
        }

【问题讨论】:

  • 00012331100025123000124510321562 是超过 32 位的信息,所以你的描述没有多大意义。此外,您的问题似乎是关于显示信息,但您所显示的只是接收数据的代码。请提供a good, minimal, complete code example,准确显示您迄今为止所做的尝试,并准确解释该代码的作用以及与您希望它做的不同之处。
  • 如果算上它,它是 32 位数据。不要看那些数字。好吧,我问了关于显示数据的问题,所以我把它贴在这里。如果我知道的话,我就不会在这里发帖了。这就是我发布的代码,我可以通过它接收该数据。
  • 你知道what a bit is吗?请阅读我在之前评论中提供的链接,以及这个链接:stackoverflow.com/help/how-to-ask
  • 嗯..谢谢你的链接。

标签: c# wpf sockets tcp datagrid


【解决方案1】:

如果您没有定义列的数据网格,请先添加列

for (int iIndex = 1; iIndex <= 8; iIndex++)
{
     DataColumn col = new DataGridTextColumn();
     col.Header = iIndex;
     col.Binding = new Binding(iIndex);
     YourDatagrid.Columns.Add(col);
}

然后在您取回消息后,将消息字符串拆分为 8 个长度为 4 的字符串,创建一个 DataItem 并将其添加到数据网格中

YourDataGrid.Items.Add(new DataItem 
       { 1 = message.SubString(0,4)},
       { 2 = message.SubString(4,4)},
                   .
                   .
                   .
       { 8 = message.SubString(28,4)}
);          

【讨论】:

  • 谢谢你..现在会处理这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
相关资源
最近更新 更多