从以下代码中,解决网速慢还是不行?
#region ★★ ReceiveObj 状态类
public class ReceiveObj
{
public System.Net.Sockets.Socket socket = null;
public const int nBufferSize = 4000000;
public byte[] bytesBuffer = new byte[nBufferSize];
public int offet = 0;
}
#endregion 状态类
private void ReceiveCallback(IAsyncResult ar)
{
try
{
ReceiveObj receiveObj = ar.AsyncState as ReceiveObj;
System.Net.Sockets.Socket socket = receiveObj.socket;
int bytesRead = socket.EndReceive(ar);
if (bytesRead > 0)
{
receiveObj.offet += bytesRead; 解决网速慢?
Common.BusinessTransByte btb = new Common.BusinessTransByte();
Common.BusinessTrans businessTrans = new Common.BusinessTrans();
try
{
businessTrans = btb.ByteToBusinessTrans(receiveObj.bytesBuffer);
}
catch (Exception ex)
{
ex.ToString();
socket.BeginReceive(receiveObj.bytesBuffer, receiveObj.offet
, receiveObj.bytesBuffer.Length - receiveObj.offet, SocketFlags.None
, new AsyncCallback(ReceiveCallback), receiveObj); 解决网速慢?
return;
}
try
{
receiveObj.offet = 0;
ReceiveService handler = EventReceiveService; //TO ClientProxy Client socketClient_EventReceiveService
if (handler != null)
{
handler(businessTrans);
}
}
catch (Exception ex)
{
}
finally
{
socket.BeginReceive(receiveObj.bytesBuffer, receiveObj.offet, receiveObj.bytesBuffer.Length, SocketFlags.None,
new AsyncCallback(ReceiveCallback), receiveObj);
}
}
else
{
ReceiveServiceStop handler = EventReceiveServiceStop;
if (handler != null)
{
handler();
}
}
}
catch(Exception ex)
{
Log.Writer.Debug("ClientProxy SocketClient ReceiveCallback", ex);
}
}
本文探讨了在网络接收过程中遇到的速度慢问题,并通过调整缓冲区大小及优化接收流程来提高数据接收效率。针对异常情况提供了错误处理机制,确保数据接收过程的稳定性。
543

被折叠的 条评论
为什么被折叠?



