You've already forked lidgren-network-gen3
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:
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user