最后,就是通过NC_NetStart()函数来开启网络了。 这个函数会根据前面几篇中的配置过程与配置的参数启动NDK网络,同时它会创建以下三个回调函数: 网络启动时只运行一次的函数,创建自己的应用程序线程: void (*NetStart)() 网络被关闭时只运行一次的函数,删除创建的应用程序线程: void (*NetStop)() 当IP地址改变时运行的函数: void (*Ne tiP)(IPN,uint,uint) 程序实现如下:
- do
- {
- rc = NC_NetStart(hCfg, NetworkOpen, NetworkClose, NetworkIPAddr);
- } while(rc > 0);
复制代码
启动函数NetworkOpen中用TaskCreate函数创建了4个网络应用进程的。
- hEcho = TaskCreate(echosrv, "EchoSrv", OS_TASKPRINORM, 0x1400, 0, 0, 0);
- hData = TaskCreate(datasrv, "DataSrv", OS_TASKPRINORM, 0x1400, 0, 0, 0);
- hNull = TaskCreate(nullsrv, "NullSrv", OS_TASKPRINORM, 0x1400, 0, 0, 0);
- hOob = TaskCreate(oobsrv, "OobSrv", OS_TASKPRINORM, 0x1000, 0, 0, 0);
复制代码
函数中的进程EchoSrv、DataSrv、NullSrv、OobSrv在ndk的安装目录中可以找到,对应的路径为:ndk_2_21_02_43packagestindktoolsservers文件夹。
而NetworkClose函数,关闭这四个服务,并删除任务。
- void NetworkClose()
- {
- // 关闭会话
- fdCloseSession(hOob);
- fdCloseSession(hNull);
- fdCloseSession(hData);
- fdCloseSession(hEcho);
- // 关闭控制台
- ConsoleClose();
- // 删除任务
- TaskSetPri(TaskSelf(), NC_PRIORITY_LOW);
- TaskDestroy(hOob);
- TaskDestroy(hNull);
- TaskDestroy(hData);
- TaskDestroy(hEcho);
- }
复制代码
NetworkIPAddr()函数用来同步网络任务,该网络任务需要在执行前设置一个本地IP地址。 这个函数有三个参数分别为: IPAddr 增加或者移除的IP地址
IfIndex 外设接口获取或者移除IP地址的标识
fAdd 增加一个IP地址时设为1,移除IP地址时设为0 经过上面的配置,就将NDK的网络启动起来了。现在可以进行测试了。 这里使用了DHCP进行IP自动分配。
在浏览器中打开192.168.1.117可以看到之前帖子里新建的网页界面。
中的内容是一样的。不再赘述。 至此NDK中主要的几种服务的使用就完成了。 下面是工程源文件:
|