我的理解是:在实例中发现这个函数虽然包含在while循环里面,但是其实只调用了一次然后网络打开了,之后进入到NetworkOpen()里面,然后执行完DaemonNew以后,在SPRU524中查阅到守护进程是一个网络监视任务,这监视过程中程序没有停下来,那么程序进入idle了吗?为什么不是返回到StackTest任务呢,他的优先级显然是比IDLE更高?
我尝试用如下语句来主动连接服务器:
static void NetworkOpen() {
platform_write("网络系统已经打开:\n");
hHellotcp = DaemonNew(SOCK_STREAMNC, 0, 7, dtask_tcp_hello, OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 );
hHelloudp = DaemonNew(SOCK_DGRAM, 0, 7,dtask_udp_hello,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 1 );
hconnect = TaskCreate(connet_tcp,"connet_test",5,0x2400,0,0,0);
}
1、调试之后确实连接上PC服务器了,但是从PC端发送下来的TCP数据包不会被dtask_tcp_hello处理,为什么会这样?我的理解是这个守护进程优先级更高应该是当socket包到来时会进入dtask_tcp_hello的吧?
2、我的想法只是把DSP端当作客户端,主动去连接服务器,如果想要网络打开后主动连接服务器应该怎么做才好呢?
3、还有在这里有一个socket到来系统是怎么知道是UDP还是TCP数据包而进入我相应的处理程序的?