基础(十七):SYSBIOS-NDK(4)
时间:10-02
整理:3721RD
点击:
前几篇设置了NDK,配置了IP,那么接下来就要配置Telnet服务了。
记得前面的配置都使用了相应的结构体,Telnet的配置也是一样,使用了CI_SERVICE_TELNET结构体,这个结构体与配置DHCP时使用的结构很像。
可以看到它有成员的第一个结构体与NTPARAM_DHCP结构体是一样的,不同的是第二个成员,这里变成了一个NTPARAM_TELNET结构体。
那么NTPARAM_TELNET结构体的定义如下:
MaxCon:telnet会话的最大数目,范围是1到24。
Port:Telnet使用的TCP端口,Telnet默认是0。
(*Callback)(PSA),从名字上看就是Telnet的回调函数了。
- bzero(&telnet, sizeof(telnet));//将telnet清0
- telnet.cisargs.IPAddr = INADDR_ANY;
- telnet.cisargs.pCbSrv = &ServiceReport;
- telnet.param.MaxCon = 2;
- telnet.param.Callback = &ConsoleOpen;
- CfgAddEntry(hCfg, CFGTAG_SERVICE, CFGITEM_SERVICE_TELNET, 0, sizeof(telnet), (UINT8 *)&telnet, 0);
可以看到Telnet的回调函数是ConsoleOpen。当在终端使用Telnet服务时,通过调用ConsoleOpen 函数进 入Telnet服务, 该函数为telnet.param.CallBack的参数。
函数的原型为:
- SOCKET ConsoleOpen( PSA pClient )
- {
- HANDLE fd1, fd2;
- // Create the local pipe - abort on error
- if( pipe( &fd1, &fd2 ) != 0 )
- return( INVALID_SOCKET );
- // If an instance is already running, abort
- if( hConsole )
- {
- // If the console is already running, return a quick message and
- // close the pipe.
- send( fd2, StrBusy, strlen(StrBusy), 0 );
- fdClose( fd2 );
- }
- else
- {
- // Create the console thread
- hConsole = TaskCreate( console, "Console", OS_TASKPRINORM, 0x1000,
- (UINT32)fd2, (UINT32)pClient, 0 );
- // Close the pipe and abort on an error
- if( !hConsole )
- {
- send( fd2, StrError, strlen(StrError), 0 );
- fdClose( fd2 );
- }
- }
- // Return the local fd
- return( fd1 );
- }
由于接下来的几篇都是NDK的讲解与使用方法的说明,在NDK的最后一篇将把所有的源码与二进制文件上传。
期待更新哦 哈哈
加紧这几天就调好了,结项了。
感谢小编分享,写的非常好
下载看看,谢谢分享
又玩了一块DSP啊。
顺便学习一下图像处理的知识。
玩会了DSP,工资不用愁啊,打算今年暑假学俩月,秋季就找工作了
顶
小编,telnet下的reboot能成功吗,我这里用的官方例程,reboot后网口就不能用了,除非断电重启。