1
0
mirror of https://github.com/lidgren/lidgren-network-gen3.git synced 2026-05-17 07:36:32 +09:00

Fragmentation fix

This commit is contained in:
lidgren
2010-06-17 17:47:15 +00:00
parent 3bd903aeb8
commit f65504518c
3 changed files with 11 additions and 2 deletions

View File

@@ -28,6 +28,8 @@ namespace Lidgren.Network
[DebuggerDisplay("RemoteEndpoint={m_remoteEndpoint} Status={m_status}")] [DebuggerDisplay("RemoteEndpoint={m_remoteEndpoint} Status={m_status}")]
public partial class NetConnection public partial class NetConnection
{ {
private static readonly NetFragmentationInfo s_genericFragmentationInfo = new NetFragmentationInfo();
private readonly NetPeer m_owner; private readonly NetPeer m_owner;
internal readonly IPEndPoint m_remoteEndpoint; internal readonly IPEndPoint m_remoteEndpoint;
internal double m_lastHeardFrom; internal double m_lastHeardFrom;
@@ -402,6 +404,8 @@ namespace Lidgren.Network
im.m_sequenceNumber = channelSequenceNumber; im.m_sequenceNumber = channelSequenceNumber;
im.m_senderConnection = this; im.m_senderConnection = this;
im.m_senderEndpoint = m_remoteEndpoint; im.m_senderEndpoint = m_remoteEndpoint;
if (isFragment)
im.m_fragmentationInfo = s_genericFragmentationInfo;
m_owner.LogVerbose("Withholding " + im + " (waiting for " + m_nextExpectedReliableSequence[reliableSlot] + ")"); m_owner.LogVerbose("Withholding " + im + " (waiting for " + m_nextExpectedReliableSequence[reliableSlot] + ")");
@@ -443,11 +447,13 @@ namespace Lidgren.Network
im.m_sequenceNumber = seqNr; im.m_sequenceNumber = seqNr;
im.m_senderConnection = this; im.m_senderConnection = this;
im.m_senderEndpoint = m_remoteEndpoint; im.m_senderEndpoint = m_remoteEndpoint;
NetFragmentationInfo info = new NetFragmentationInfo(); NetFragmentationInfo info = new NetFragmentationInfo();
info.TotalFragmentCount = fragmentTotalCount; info.TotalFragmentCount = fragmentTotalCount;
info.Received = new bool[fragmentTotalCount]; info.Received = new bool[fragmentTotalCount];
info.FragmentSize = bytesLen; info.FragmentSize = bytesLen;
im.m_fragmentationInfo = info; im.m_fragmentationInfo = info;
m_fragmentGroups[fragmentGroup] = im; m_fragmentGroups[fragmentGroup] = im;
} }
@@ -457,6 +463,7 @@ namespace Lidgren.Network
return; return;
// all received! // all received!
im.m_fragmentationInfo = null;
m_fragmentGroups.Remove(fragmentGroup); m_fragmentGroups.Remove(fragmentGroup);
} }
else else

View File

@@ -12,6 +12,7 @@ namespace BarebonesClient
{ {
NetPeerConfiguration config = new NetPeerConfiguration("barebones"); NetPeerConfiguration config = new NetPeerConfiguration("barebones");
config.SimulatedLoss = 0.1f; config.SimulatedLoss = 0.1f;
config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
NetClient client = new NetClient(config); NetClient client = new NetClient(config);
client.Start(); client.Start();
@@ -39,7 +40,7 @@ namespace BarebonesClient
// temporary code to verify issue with large messages // temporary code to verify issue with large messages
StringBuilder bdr = new StringBuilder(); StringBuilder bdr = new StringBuilder();
for (int i = 0; i < 1000; i++) for (int i = 0; i < 400; i++)
bdr.Append("Hallonsmurf" + i.ToString()); bdr.Append("Hallonsmurf" + i.ToString());
om.Write(bdr.ToString()); om.Write(bdr.ToString());

View File

@@ -13,6 +13,7 @@ namespace BarebonesServer
NetPeerConfiguration config = new NetPeerConfiguration("barebones"); NetPeerConfiguration config = new NetPeerConfiguration("barebones");
config.Port = 14242; config.Port = 14242;
config.SimulatedLoss = 0.1f; config.SimulatedLoss = 0.1f;
config.EnableMessageType(NetIncomingMessageType.VerboseDebugMessage);
NetServer server = new NetServer(config); NetServer server = new NetServer(config);
server.Start(); server.Start();
@@ -42,7 +43,7 @@ namespace BarebonesServer
// temporary code to verify issue with large messages // temporary code to verify issue with large messages
StringBuilder bdr = new StringBuilder(); StringBuilder bdr = new StringBuilder();
for (int i = 0; i < 1000; i++) for (int i = 0; i < 400; i++)
bdr.Append("Hallonsmurf" + i.ToString()); bdr.Append("Hallonsmurf" + i.ToString());
string str = inc.ReadString(); string str = inc.ReadString();