这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » VXWORKS下TCP通信求助!

共5条 1/1 1 跳转至

VXWORKS下TCP通信求助!

菜鸟
2007-05-22 23:42:43     打赏

VXWORKS下TCP通信求助!
各位高手好!小弟最近在调试VXWORKS下TCP通信时遇到了不可理解的问题,百思不得其解,请求

帮忙。
程序代码如下:
STATUS TcptoCom()
{
……
printf("bind ok\n");
if (listen(sock_fd,Max_Tcp_Connection)==ERROR)
{
perror("listen\n");
close(sock_fd);
return(ERROR);
}

printf("listen ok");
FOREVER
{
printf("before accept\n");/*执行到此处就不再运行*/
newfd=accept(sock_fd,(struct sockaddr *) &clientAddr, sockAddrSize);
if(newfd==ERROR){
printf("\n accept wrong\n");
perror("accept\n");
close(sock_fd);
return(ERROR);
}
printf("accept ok");
……
}
在shell下输入显示如下:
-> TcptoCom
socket ok
bind ok
listen okbefore accept/*执行到此处不再显示*/

我感觉是accept()函数的问题,在PC中CMD-netstat -a -n命令下:
TCP 192.168.0.160:4001 192.168.0.222:5005 ESTABLISHED
应该是连接上了,但是它不往下跑,请求各位有相关开发经验的高手指导,谢过了~~~




关键词: VXWORKS     通信     求助    

菜鸟
2007-05-23 01:05:00     打赏
2楼

accept在没有东西accept的时候是会挂起的吧。必须要东西可以accept才行啊,网络上必须有包才可以继续执行,所以看起来,你的这段代码运行现象完全正常。

为了方便测试,你可以 用sp TcptoCom来测试,应该可以看到一个新建的任务是挂起的,


菜鸟
2007-05-23 01:35:00     打赏
3楼
我在tcp/udp测试工具上测试了,已经显示建立连接了,同时也发送数据了,但是程序还是停留在这个位置上,没有向下进行,不知道原因

菜鸟
2007-05-23 06:06:00     打赏
4楼

啊,,,,检查下端口是否匹配,tcp udp测试工具两台机器互通一下是否确实发出数据了。

如果还是不行,把这个程序放在单独的线程运行(用sp TcptoCom),然后用lkAddr等调试命令,看不往下运行的情况下挂起的程序指针pc在哪里,对应的函数和指令是什么。


菜鸟
2007-05-23 20:15:00     打赏
5楼

我仔细看了一下原来是这里的问题,newfd=accept(sock_fd,(struct sockaddr *) &clientAddr, sockAddrSize);

本来应该是传址调用的,newfd=accept(sock_fd,(struct sockaddr *) &clientAddr, &sockAddrSize);这样就OK了

多谢大家帮忙


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]