No.100851 作者:sunbin1010 邮件:sunbin1010@163.com ID:65784 登陆:1次 文章数:2篇 最后登陆IP:222.131.58.12 最后登陆:2006/12/20 22:58:15 注册:2006/12/20 19:53:25 财富:105 发帖时间:2006/12/20 20:04:11 发贴者IP:222.131.58.12 标题:sunbin1010:紧急求助!关于vxworks下socket问题。。。 摘要:No.100851紧急求助!关于vxworks下socket问题。。。 紧急求助!关于vxworks下socket问题。。。不知道什么原因,可能vxworks的某个组件没加、BSP不完善、板卡问题?我现在碰到个问题,困恼了我好久依旧没解决——vxworks服务器端一直阻塞在accept处,windows客户端在connect后返回为-1,两者连不上。 (我在vxworks(ARM2440板卡上)中加载了socket服务器程序,在win下运行自己编的客户端程序,另外,我在win下也编了个服务器程序,win下的客户端可以和win下的服务器正常通信。) 串口打印信息为: 0x33f805ac (tDbgTask): This is just server_socket test ... after socket return 4 after bind return 0 after listen return 0 在shell下 ifShow后显示为: -> ifShow dmf (unit number 0): Flags: (0x8863) UP BROADCAST RUNNING ARP MULTICAST Type: ETHERNET_CSMACD Internet address: 192.168.0.99 Broadcast address: 192.168.0.255 Netmask 0xffffff00 Subnetmask 0xffffff00 Ethernet address is 1a:2b:3c:4d:5e:6f Metric is 0 Maximum Transfer Unit size is 1500 58 packets received; 6 packets sent 46 multicast packets received 1 multicast packets sent 0 input errors; 0 output errors 0 collisions; 0 dropped lo (unit number 0): Flags: (0x8069) UP LOOPBACK RUNNING ARP MULTICAST Type: SOFTWARE_LOOPBACK Internet address: 127.0.0.1 Netmask 0xff000000 Subnetmask 0xff000000 Metric is 0 Maximum Transfer Unit size is 32768 0 packets received; 0 packets sent 0 multicast packets received 0 multicast packets sent 0 input errors; 0 output errors 0 collisions; 0 dropped value = 0 = 0x0 在PC上抓包为:   下面分别是vxworks(server)、windows(client)下的源码: vxworks: #include "vxWorks.h" #include "sockLib.h" #include "taskLib.h" #include "inetLib.h" #include "stdioLib.h" #include "ioLib.h" #include "sioLib.h" #include "string.h" #include "stdLib.h" #include "stdio.h" #define MYPORT 2001 #define BACKLOG 3 int serverfunc(void) { char buf[1024]; char * clientip; struct sockaddr_in client; struct sockaddr_in server; int sk; int newsk; int namelen; int pktlen; int temp1,temp2,temp3; logMsg("%s\n\n","This is just server_socket test ...",0,0,0,0,0); if ((sk=socket(AF_INET, SOCK_STREAM, 0)) <0) { logMsg("%s","Socket build fail",0,0,0,0,0); return (-1); } printf("\nafter socket return %d\n",sk); memset((char *)&server,''\0'',sizeof(server)); server.sin_family = AF_INET; server.sin_len = sizeof(server); server.sin_port = htons(MYPORT); server.sin_addr.s_addr = INADDR_ANY; if ((temp2=bind(sk, (struct sockaddr *)&server, sizeof(server)))==-1) { logMsg("%s","Bind() fail",0,0,0,0,0); return (-1); } printf("\nafter bind return %d\n",temp2); if ((temp3=listen(sk,BACKLOG))==-1) { logMsg("%s","Listen() fail",0,0,0,0,0); return (-1); ......
>>返回讨论的主题
|