什么是wap网站,wordpress链接尾缀,织梦素材网站模板,个人简介干净短句目录 DSP 开发例程(5): tcp_server创建工程源码编辑tcp_echo.chelloWorld.c 调试说明 DSP 开发例程(5): tcp_server
此例程实现在 EVM6678L 开发板上创建 TCP Server进程, 完成计算机与开发板之间的 TCP/IP 通信. 例程源码可从我的 gitee 仓库上克隆或下载. 点击 DSP 开发教程… 目录 DSP 开发例程(5): tcp_server创建工程源码编辑tcp_echo.chelloWorld.c 调试说明 DSP 开发例程(5): tcp_server
此例程实现在 EVM6678L 开发板上创建 TCP Server进程, 完成计算机与开发板之间的 TCP/IP 通信. 例程源码可从我的 gitee 仓库上克隆或下载. 点击 DSP 开发教程(0): 汇总查看其他例程说明.
创建工程
此例程在官方提供的UDP通信例程基础上修改.
在 Project Explorer 视图中, 右键选择: Import 选择 Existing CCS Eclipse Projects, 点击 Next. 点击 Browse, 选择 mcsdk_###_#\examples 所在目录, 勾选 helloworld_evmc6678l 工程, 勾选 Copy projects into workspace, 点击 Finish. 复制 mcsdk_###_#\examples\ndk\helloWorld 目录下的四个 .c 源文件. - 选择刚导入的工程, 右键选择: Paste, 粘贴刚刚复制的四个 .c 源文件到此工程中. 在弹出的 Question 对话框中点击 Yes To All, 完成替换. 将此工程重命名为: tcp_server. 源码编辑
tcp_echo.c
新建名为 tcp_echo.c 的源文件. 文件内容如下:
#include ti/ndk/inc/netmain.hint dtask_tcp_echo(SOCKET s, UINT32 unused)
{struct timeval to;int I;char *pBuf;HANDLE hBuffer;(void)unused;// Configure our socket timeout to be 5 secondsto.tv_sec 5;to.tv_usec 0;setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, to, sizeof(to));setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, to, sizeof(to));I 1;setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, I, 4);for (;;){I (int)recvnc(s, (void **)pBuf, 0, hBuffer);// If we read data, echo it backif (I 0){if (send(s, pBuf, I, 0) 0)break;recvncfree(hBuffer);}// If the connection got an error or disconnect, closeelsebreak;}fdClose(s);// Return 0 since we closed the socketreturn (0);
}
其中, dtask_tcp_echo() 完成 TCP 数据的收发. 这段代码可以在 ti\ndk_###_#\docs\spru524i.pdf 的 5.4.2 节 中找到. helloWorld.c
打开 helloWorld.c 文件.在其中添加 dtask_tcp_echo() 的外部声明.
extern int dtask_tcp_echo(SOCKET s, UINT32 unused);修改 NetworkOpen() 函数, 将 dtask_udp_hello() 函数句柄添加到守护进程中.
static void NetworkOpen()
{// Create our local serverhHello DaemonNew( SOCK_STREAMNC, 0, 7, dtask_tcp_echo,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 );
// hHello DaemonNew( SOCK_DGRAM, 0, 7, dtask_udp_hello,
// OS_TASKPRINORM, OS_TASKSTKNORM, 0, 1 );
}查看计算机的以太网IP, 将 开发板的IP 修改到同一个网段.(此例程中, 我的IP为192.168.0.11). 保存上述修改, 并编译工程.
调试
将 EVM6678L 开发板 通过网线与 计算机连接.连接仿真器.开发板上电, 导入程序并运行. 此时在 Console 窗口能看到如下信息. 打开 命令提示符 窗口, 运行 ping 命令, 查看与开发板的网络连接是否正常. 打开 tera term, 选择 TCP/IP连接, 修改 Host 为 LocalIPAddr设置的地址, TCP端口设置为 7. (也可以使用 putty 或其他测试工具进行连接.) 选择菜单: Setup | Terminal, 勾选 Local echo. 在终端中输入一串字符后回车, 可以看到 开发板 TCP 服务进程回传的字符串.自此说明 TCP Server 能够正常运行.
说明
DaemonNew() 的第三个参数为 监听端口, 我们可以修改它来指定服务器端口.