CC3000作为客户端的时候,是可以连接并传输数据的。
当我将CC3000做服务端,BIND总是返回-1;
调用socket,然后bind,结果返回-1,代码如下:
INT32 fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(fd < 0){while(1);}sockaddr_in host_addr;host_addr.sin_family = AF_INET;host_addr.sin_port = my_htons(port);ipaddr_aton(ip,&host_addr.sin_addr);error = bind(fd3,(sockaddr*)&host_addr,sizeof(sockaddr));if(error < 0){while(1);}
如果忽略bind,继续执行listen、accept,那么accept的时候返回-2。
请大家帮帮忙,实在没辙了。
mei ha:
回复 Yue TANG:
谢谢 TY
现在可以bind 了,但是accept 的时候,返回-2;
cc3000 : ip :192.168.43.32 : 4000
bind 0.0.0.0
linsten 10
accept return -2;客户端: connect 192.168.43.32 :4000 失败
请问这是怎么回事?
mei ha:
回复 Yonghua Pan:
谢谢 Yonghua Pan
经过修改,现象如下:
cc3000 : ip :192.168.43.32 : 8000(使用静态IP)
bind 0.0.0.0
linsten 1
accept() return -2,client addr ip:192.168.43.219,client port :49988;客户端: IP:192.168.43.219(动态ip)
connect 192.168.43.32 :8000当设置如下时
UINT32 optval = 0xFFFFFFFF;
setsockopt(sd,SOL_SOCKET,SOCKOPT_ACCEPT_NONBLOCK,(void*)&optval,4);
accept会一直阻塞。如果不调用上面 setsocktopt ,则会返回 -2,while循环调用同样如此。在调试过程中,偶尔会接收到 client ip :192.168.43.219,端口号:49988,虽然IP地址是正确的,但是端口号不对,而且仍然返回 -2;
求解!
TI中文支持网


