没有收到我发送的相同数量的字节 - c#套接字

时间:2015-10-31 16:43:01

标签: c# sockets

我的项目有这个奇怪的问题:

我正在使用套接字,服务器/客户端代码是相同的,它们都使用2个不同的线程(一个发送,一个接收)但是我得到的数据不是我发送的。

发送:

// ...
$TradeURL = urldecode($_POST['TradeURL']);
// ...

接收:

double[] data = new double[3];

// i'm sending this double array, in the actual code it's filled with 3 numbers

byte[] result = new byte[data.Length * sizeof(double)];
Buffer.BlockCopy(data, 0, result, 0, result.Length);

// converting to byte

clientSocket.Send(result);

// at this point, the array size is 24 bytes (the size doesnt change for every time i'm trying to send) and i'm sending it to the client/server.

起初我认为转换为double []时出现了问题,所以我尝试了不同的方法,但它们都给出了相同的结果。

我缺少什么?

1 个答案:

答案 0 :(得分:2)

接收返回接收的字节数。如果收到的字节数较少,则需要正确处理。循环直到你收到必要的字节数。以下是sample如何在流的情况下执行此操作,您可以尝试类似的方法。

同样在这种情况下,您需要确保以相同的eindianness发送/接收号码,我希望您已完成。

PS。正如评论中提到的那样,您似乎也没有正确使用Receive