void WaitForData(ISocketInfo soc)
{
if (socket != null && socket.Connected)
socket.BeginReceive(buffer, 0, buffer.Length,
SocketFlags.None, OnPacketReceived, socket);
}
void OnPacketReceived(IAsyncResult asyn)
{
try
{
var socket = (ISocketInfo)asyn.AsyncState;
numberOfBytesReceived = socket.EndReceive(asyn);
if (numberOfBytesReceived > 0)
{
_queue.Enqueue(buffer, 0, numberOfBytesReceived);
OnNewDataReceived();
}
WaitForData(socketInfo);
}
catch (SocketException ex)
{
Log.Warn("Socket error while receiving packet", ex);
Close();
}
}
(更新)
看来我的问题表达得不够清楚。我的问题不是如何解析数据,如果它被分割成多个段。我的协议定义得很好(即START_COOKIE、LENGTH、DATA、CRC),并且我一收到数据就将其排入字节FIFO(上面代码段中的_queue.enqueue
调用),因此我可以轻松地对其进行异步解析。
问题是,如果我看到的是第号包。1(100字节)(在Wireshark中+50ms)和数据包编号。2(100字节)在Wireshark中+100ms,而且我的应用程序没有阻塞OnPacketReceived
方法,也没有消耗CPU,为什么.NET会每隔一段时间在+100ms调用OnPacketReceived
并将两个数据包合并为一个?
您可能会收到更少或更多,但不能保证您会收到发送的内容。
来自MSDN:
无法保证您发送的数据会立即出现在网络上。为了提高网络效率,基础系统可以延迟传输,直到收集到大量的传出数据。BeginSend方法的成功完成意味着基础系统有空间为网络发送缓冲数据。
主要内容:Oracle MERGE语句简介,Oracle MERGE示例在本教程中将学习如何使用Oracle 语句来执行更新或基于指定条件插入数据。 Oracle MERGE语句简介 Oracle 语句从一个或多个源表中选择数据并更新或将其插入到目标表中。 语句可指定一个条件来确定是更新数据还是将数据插入到目标表中。 以下说明了Oracle 语句的语法: 下面来仔细看看上面语句的语法: 首先,指定要在子句中更新或插入的目标表()。 其次,指定要更新或插入子句中的数据源
有些时候,应用程序调试日志会包含非常丰富的内容,为一个事件打印出很多行内容。这种日志通常都很难通过命令行解析的方式做分析。 而 logstash 正为此准备好了 codec/multiline 插件! 小贴士:multiline 插件也可以用于其他类似的堆栈式信息,比如 linux 的内核日志。 配置示例 input { stdin { codec => multiline
问题内容: 我在加入熊猫方面遇到问题,并且试图找出问题所在。假设我有一个x: 我应该能够通过简单的连接命令在y = x上将y与索引上的y联接,除了同名具有+2。 我希望决赛对双方都有1941个非值。我也尝试过合并,但是我有同样的问题。 我以为正确的答案是pandas.concat([x,y]),但这也不符合我的预期。 编辑:如果您在加入方面遇到问题,请阅读下面的韦斯答案。我有一个重复的时间戳。 问
问题内容: 有很多类似的问题,但没有一个专门针对此问题。 我有一个数据帧列表,我需要使用唯一列将它们合并在一起。字段名称不同,因此concat退出了。 我可以手动使用等将每个df逐一合并,但是问题是列表中数据帧的数量随用户输入而不同。 有什么合并方法可以一次性将所有数据帧合并到一个列表中?还是某些for in loop? 我正在使用Python 2.7。 问题答案: 您可以使用函数where是数据
我有不同的数据帧,需要根据日期列将它们合并在一起。如果我只有两个数据帧,我可以使用,要使用三个数据帧,我可以使用,但是使用多个数据帧会变得非常复杂和不可读。 所有数据帧都有一个公共列-,但它们的行数和列数都不相同,我只需要其中每个日期对每个数据帧都是公共的行。 所以,我试图编写一个递归函数,返回一个包含所有数据的数据帧,但它不起作用。那么我应该如何合并多个数据帧呢? 我尝试了不同的方法,得到了一些
我得合并两个DF。一个是我的主df,另一个有很多NaN 合并应该只是“忽略”NaN值,并且只在列值不是NaN的地方合并。我尝试了不同的方法,但是df2中的数据有几十种可能出现NaN值。df1有168K行,df2大约有170行,应该与任何与所有非NAN值匹配的相关联。有人知道如何有效地做到这一点吗? 经过对不同方法的广泛研究,似乎一个“神奇”的方式忽略NaNs可能是不存在的。我想在df2上应用一个掩