K60 MQX4.2,用RTCS组件实现TCP/IP通信,已经实现了每秒发送一个数据包。
在TCP/IP中 k60作为客户端,用一台电脑上的以太网助手作为服务器。
问题是当电脑上的助手断开TCP连接后,在10秒后再重连,无法与K60重新建立TCP连接。
还有就是如果电脑上的助手在K60程序运行后再开启的话,始终无法建立TCP连接。
根据RTCS的文档,尝试修改 OPT_CONNECT_TIMEOUT, OPT_SEND_TIMEOUT,OPT_TIMEWAIT_TIMEOUT这几参数
但始终没有效果,代码如下 请大神帮忙看下
uint32_t opt_value=TRUE; uint32_t time_out=10000; uint32_t send_time_out=10000; uint32_t wait_time_out=10000; uint32_t opt_length = sizeof(uint32_t); sock_list[0]=socket(AF_INET,SOCK_STREAM,0);//创建TCPIPsocket setsockopt(sock_list[0],SOL_TCP,OPT_SEND_TIMEOUT,&send_time_out,opt_length); setsockopt(sock_list[0],SOL_TCP,OPT_CONNECT_TIMEOUT,&time_out,opt_length); setsockopt(sock_list[0],SOL_TCP,OPT_TIMEWAIT_TIMEOUT,&wait_time_out,opt_length); laddr.sin_family=AF_INET; laddr.sin_port=8000; laddr.sin_addr.s_addr=INADDR_ANY; bind(sock_list[0],&laddr,sizeof(laddr));//绑定TCPsocket; raddr.sin_family=AF_INET; raddr.sin_port=8000; raddr.sin_addr.s_addr=IPADDR(192,168,50,200); setsockopt(sock_list[0],SOL_TCP,OPT_RECEIVE_NOWAIT,&opt_value, opt_length); uint16_t rlen=sizeof(raddr); connect(sock_list[0],(struct sockaddr *)&raddr,rlen); while(1) { RTCS_selectall(100); recv(sock_list[0],buffer_tcp_recv,30,0); send(sock_list[0],buffer_tcp_send,16,0); if (buffer_tcp_send[9]==0x03) _time_delay(1000); }
|