public bool DoSendResult(byte[] buffer, int offset, int count) { string commandText = outgoingDataAssembler.GetProtocolText(); byte[] bufferUTF8 = Encoding.UTF8.GetBytes(commandText); int totalLength = sizeof(int) + bufferUTF8.Length + count; //获取总大小 AsyncSendBufferManager asyncSendBufferManager = asyncSocketUserToken.SendBuffer; asyncSendBufferManager.StartPacket(); asyncSendBufferManager.DynamicBufferManager.WriteInt(totalLength, false); //写入总大小 asyncSendBufferManager.DynamicBufferManager.WriteInt(bufferUTF8.Length, false); //写入命令大小 asyncSendBufferManager.DynamicBufferManager.WriteBuffer(bufferUTF8); //写入命令内容 asyncSendBufferManager.DynamicBufferManager.WriteBuffer(buffer, offset, count); //写入二进制数据 asyncSendBufferManager.EndPacket(); bool result = true; if (!sendAsync) { int packetOffset = 0; int packetCount = 0; if (asyncSendBufferManager.GetFirstPacket(ref packetOffset, ref packetCount)) { sendAsync = true; result = asyncSocketServer.SendAsyncEvent(asyncSocketUserToken.Socket, asyncSocketUserToken.SendEventArgs, asyncSendBufferManager.DynamicBufferManager.Buffer, packetOffset, packetCount); } } return(result); }
public virtual bool SendCompleted() { activeDT = DateTime.UtcNow; sendAsync = false; AsyncSendBufferManager asyncSendBufferManager = asyncSocketUserToken.SendBuffer; asyncSendBufferManager.ClearFirstPacket(); //清除已发送的包 int offset = 0; int count = 0; if (asyncSendBufferManager.GetFirstPacket(ref offset, ref count)) { sendAsync = true; return(asyncSocketServer.SendAsyncEvent(asyncSocketUserToken.Socket, asyncSocketUserToken.SendEventArgs, asyncSendBufferManager.DynamicBufferManager.Buffer, offset, count)); } else { return(SendCallback()); } }
public bool DoSendBuffer(byte[] buffer, int offset, int count) //不是按包格式下发一个内存块,用于日志这类下发协议 { AsyncSendBufferManager asyncSendBufferManager = asyncSocketUserToken.SendBuffer; asyncSendBufferManager.StartPacket(); asyncSendBufferManager.DynamicBufferManager.WriteBuffer(buffer, offset, count); asyncSendBufferManager.EndPacket(); bool result = true; if (!sendAsync) { int packetOffset = 0; int packetCount = 0; if (asyncSendBufferManager.GetFirstPacket(ref packetOffset, ref packetCount)) { sendAsync = true; result = asyncSocketServer.SendAsyncEvent(asyncSocketUserToken.Socket, asyncSocketUserToken.SendEventArgs, asyncSendBufferManager.DynamicBufferManager.Buffer, packetOffset, packetCount); } } return(result); }