0
緩衝在客戶端我使用額外的線程,其執行這種方法:獲得相同的數據從TCP/IP服務器
public void FillBuf(object sender)
{
var handler = (Socket)sender;
while (true)
{
received = 0;
while (received < 512)
{
int block = handler.Receive(bytes, received, bytes.Length - received, SocketFlags.None);
received += block;
}
que.Enqueue(bytes);
}
}
在服務器上我也有在我發送這樣的數據附加線程:
while(true)
{
for (int i=0; i < handler.Length; i++)
{
if (handler[i] != null)
{
bytes = BitConverter.GetBytes(move);//move
Array.Resize<byte>(ref bytes, 512);
handler[i].Send(bytes);
bytes = Transmition.SerializationCardArr(game.player[i].GetPlayerPack);//playerCards
Array.Resize<byte>(ref bytes, 512);
handler[i].Send(bytes);
bytes = Transmition.SerializationCardArr(table.GetAttackCards);//attackCards
Array.Resize<byte>(ref bytes, 512);
handler[i].Send(bytes);
bytes = Transmition.SerializationCardArr(table.GetDefendCards);//defendCards
Array.Resize<byte>(ref bytes, 512);
handler[i].Send(bytes);
}
}
}
當隊列中的元素數量達到一定數量時,我從緩衝區中提取數據。
問題是緩衝區中的所有元素都是相同的。 謝謝。
O my!我認爲它排隊工程不同。我用了很多時間來處理這個錯誤。非常感謝! – user3149474
但無論如何它看起來像數據重複。例如,當我發送'2'時,出於某種原因我收到'2'和'2'。 – user3149474
即使不重複。它發送完全一團糟。 – user3149474