当前位置: 首页 > 知识库问答 >
问题:

用C#从tcp客户端接收字节数组

马俊
2023-03-14

但是我这里有一些问题,有人能检查一下我的代码吗:

while (true) {
    try {                           
       Socket handler = mainSocket.Accept();
       byte[] dataToRecieve = new byte[handler.ReceiveBufferSize];
       int[] dataArray = new int[1024];
       handler.Receive(dataToRecieve);
       //////SOME CODE
       int i = handler.Send(msg);
       handler.Shutdown(SocketShutdown.Both);
       handler.Close();
    }
catch(Exception) {}
--------//////some code

现在我想要接收字节到字节数组中&然后把它转换成int数组(但是数据应该在int数组中)........

共有1个答案

慎风畔
2023-03-14

好吧,您的代码在这里已经出现了一个问题:

handler.Receive(dataToRecieve);

您忽略了receive返回的值,以告诉您实际读取了多少字节。那几乎总是个坏主意。同样,您假设您在一次呼叫中就收到了所需的所有信息。通常情况下,您要么必须循环直到读取所有数据-要么通过知道您期望的数量,要么通过读取直到没有更多的数据。

将数据转换为字节数组后,将其转换为整数数组取决于字节数组中的格式。您可能可以只使用buffer.blockcopy,但这仅限于字节数组中的词尾与内存中的词尾匹配。或者,您可以简单地创建一个大小合适的数组,然后编写一个循环:

int[] integers = new byte[size / 4];
for (int i = 0; i < integers.Length; i++)
{
    integers[i] = BitConverter.ToInt32(bytes, i * 4);
}
 类似资料:
  • 真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。

  • 问题内容: 我有一个C ++服务器和两个客户端(红宝石和Java)。一切都在64位linux机器(java 1.7.0_17)上运行。ruby客户端可以正常工作,但是java版本会出现问题。 在Java中,我尝试将字符串从客户端发送到服务器。实际上,服务器收到了整个字符串,但是服务器认为还有更多东西要接收。 红宝石客户端看起来像这样: 这里的一切工作正常。红宝石客户端发送一个字符串。服务器接收该字

  • 面试官迟到了几分钟,hr说是开会 面试官进来之后说开始吧。 1.没有自我介绍 2.八股(好多我忘记了想起来了再补充)顺序是操作系统,计网,C++。 我记得几个: TCP三次握手四次挥手 get和post区别 http状态码 cookie和session IP分片,路由器交换机网桥工作在哪一层,constexpr用过吗 进程和线程区别 什么情况会导致任务调度 页表存放在进程中还是系统中 静态库里面是

  • 我正在使用C#window应用程序表单对TCP多线程服务器进行工作,我正在尝试检测客户端的机器是否关闭并断开与服务器的连接。看了一些帖子,有了一些想法: 如何确定tcp是否连接? 我的代码如下: 多谢帮忙。

  • 我在JAVA中通过TCP接收字节数据包时遇到了一些问题。我的TCPServer类发送207字节的数据包。当我发送一个数据包时,控制台中的程序显示“读取207字节的数据包”然后停下来。在下一个数据包继续执行时,显示“多重测量”和“读取1868767867字节数据包”。之后,接收将永远停止。我不知道它为什么接收1868767867字节。我在wireshark中检查它,服务器总是发送207字节。 这是我

  • tcp 客户端例程 tcp 客户端例程 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:tcp 客户端 * * 这是一个 tcp 客户端的例程 *