我正在编写一个客户端应用程序,通过UDP与服务器程序进行通信.客户端定期发出数据请求,并需要使用最新的服务器响应.请求消息有一个16位无符号计数器字段,由服务器回显,因此我可以将请求与服务器响应配对.
由于它是UDP,我必须处理服务器响应无序到达(或根本没有到达)的情况.天真地,这意味着保持到目前为止看到的最高消息计数器并丢弃任何具有较低数字的传入消息.但是,只要我们传递65535条消息并且计数器回零,那就会失败.是否有一种很好的方法来检测(例如,有合理的可能性)消息5实际上是在消息65,000之后?
实现语言是C++.
我觉得这个问题可能有点微不足道,但我根本无法绕过它.我目前有一个类Node,它试图使用指针prevNode指向当前节点之前发生的节点.但是我似乎无法访问prevNode中的任何变量.
从以下代码运行Main.cpp时,它将打印结果'15340756'.我哪里错了?作为我仍然有点新的C++的应用.
Node.h
#include "stdafx.h"
class Node
{
public:
Node();
void setPrevNode(Node n);
Node getPrevNode();
int i;
private:
Node *prevNode;
};
Run Code Online (Sandbox Code Playgroud)
Node.cpp
#include "stdafx.h"
#include "Node.h"
Node::Node(){
i = 0;
}
void Node::setPrevNode(Node n){
prevNode = &n;
}
Node Node::getPrevNode(){
return *prevNode;
}
Run Code Online (Sandbox Code Playgroud)
Main.cpp的
#include "stdafx.h"
#include "Node.h"
int _tmain(int argc, _TCHAR* argv[])
{
Node nodes[] = {Node(), Node()};
nodes[0].i = 1;
nodes[1].setPrevNode(nodes[0]);
printf("%i", nodes[1].getPrevNode().i);
while(true){
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 关于让vim在python代码中突出显示无与伦比的括号,我对这个问题的答案很感兴趣.具体来说,我在谈论他的答案的第二部分,他提到C语法突出显示实际上标记为错误的任何花括号内的实例.这是一个不显眼的提示,当你的所有下游花括号以红色点亮时,你有未闭合的parens.
这个技巧有效,因为C语法不允许括号内的花括号.为了满足我(病态?)的好奇心,我可以用python代码做类似的事吗?python语法中有什么东西在括号内是不合法的吗?
注意:我不是想要更好地回答我的另一个问题(那里已经有很多好的答案).我只是好奇如果这个技巧甚至可以用python代码.
所以我是一个Flash家伙,我正在尝试将以下代码转换为对象C:
var slot:Object = new Object();
slot.id = i;
slot.xPos = 25*i;
slot.yPos = 25*i;
slot.isEmpty = False;
// push object to array
arrGrid.push(slot);
Run Code Online (Sandbox Code Playgroud)
后来我可以覆盖:
arrGrid[0].isEmpty = True;
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到在对象C中创建通用对象的引用.有人可以帮忙吗?
我想知道是否可以在C++中定义一个宏来定义另一个可以在以后的代码中使用的宏.这是可能的,还是g ++使用的预处理器对此有限?