• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 有关VxWorks下套接字编程

有关VxWorks下套接字编程

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了vxworks编程,vxworks网络编程,套接字编程,原始套接字编程,socket套接字编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 有关VxWorks下套接字编程
描述:

vxworkstaskSwawnstackSize

最近在搞VxWorks的套接字编程,需要用taskSpawn函数创建并激活任务,其中有个stackSize参数(任务栈大小)。
当我服务器端(VxWorks目标机)进入侦听状态,PC客户端发起连接成功后,
当USER_STACK_SIZE取为2000,NET_MSG_MAX_SIZE 取2000,一发起任务VxWorks目标机就重启,PC端显示连接成功。
当USER_STACK_SIZE改为20000之后,又可以正常通信了。
我怀疑是任务栈大小太小,VxWorks无法激活任务就崩溃了,可是这个  任务栈大小该如何设置呢?
此任务是在连接成功后才发起的,即循环接受PC端发送过来的数据。
taskSpawn(TNAME_NETRECV,TPRI_NETRECV,0,USER_STACK_SIZE,
(FUNCPTR)netRecv,0,0,0,0,0,0,0,0,0,0); //netrecv
STATUS netRecv(void)
{
    char pBuff[NET_MSG_MAX_SIZE + 1];
    int recvLen;
    while(flagNetInit == NET_INIT_COMMUSKT)
    {
recvLen = recv(commuSkt,pBuff,NET_MSG_MAX_SIZE,0);
    if((recvLen != ERROR)&&(recvLen != 0))
{
    pBuff[recvLen] = 0;
    logMsg("netRecv:received message from client:\n%s\n",(int)pBuff,0,0,0,0,0);
}
else
{
    netCloseAll();
    return ERROR;
}
    }
    logMsg("netRecv:net connection is shut down,quit\n",0,0,0,0,0,0);
    return OK;
}


解决方案1:

你这一句
char pBuff[NET_MSG_MAX_SIZE + 1];
申请的栈空间就超过NET_MSG_MAX_SIZE了,你设为2000当然不够
自己分析下要用多少栈空间,一般主要是局部变量大小,然后适当留点余量就行了

解决方案2:

   是这样的,应该先设置大一点,然后使用checkStack查看大概是在什么范围,再设置一个合理的值,这是官方文档上提到的办法

解决方案3:

用checkStack可以查看任务堆栈使用情况

解决方案4:

确实是任务堆栈影响到了你的任务重启或者任务崩溃,不知你使用的是Tornado2.2还是workbench的平台开发工具,taskSpawn(TNAME_NETRECV,TPRI_NETRECV,0,USER_STACK_SIZE, (FUNCPTR)netRecv,0,0,0,0,0,0,0,0,0,0);其中USER_STACK_SIZE就是你定义的该任务的堆栈空间大小,如果是内核配置的任务可以再kernel配置里面进行配置。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 有关VxWorks下套接字编程

相关文章

  • 2017-06-05 wince6如何实现只读不写flash。mini2440
  • 2017-06-05 wince启动慢,运行慢的原因?
  • 2017-06-05 高分求教,在线等待中。。。。。
  • 2017-06-05 wince数据库读写与CAN读写是否有影响
  • 2017-06-05 驱动程序开发的基础是?
  • 2017-06-05 请教一个基础问题。
  • 2017-06-05 AcrylicDNSProxy怎么配置!
  • 2017-06-05 vxworks68UP模式下进不了系统
  • 2017-06-05 cc2530读取ADE7753自带SPI主模式收发问题
  • 2017-06-05 比如我有一个公网ip如何匹配我的域名和ip,我需要自己搭建dns服务器吗

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • TVP5150图像抖动问题
    • 嵌入式Linux设备NandFlash如何保证分区文件不被破坏?
    • IoCreateDevice创建驱动设备失败
    • 老板给我一个s3c2416的板子,之后我该怎么进行下一步。
    • stm32ftp客户端程序
    • 请问sys驱动如何安装?
    • 关于vxworks69的问题?
    • STM32F2怎么实现模拟U盘
    • SimpliciTI协议栈开启CCA发送数据失败
    • TI公司的技术开发论坛在哪里

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有