我在stm32上连接cc3000模组, 现在wifi网络已调通, dhcp分配了ip, pc能ping到该设备
现在问题是,利用socket api写server程序时, socket 创建后, bind, listen, accept, 本来没有客户连接时, accept应该是一直block的, 但是运行一段时间后,并且没有客户端连接该server, accept就会自动返回了,返回值为-57, 如果马上又客户端连接,server端可以收到client的数据,但是发数据给client, send就会一直block, 客户端也收不到, 代码如下:
memset(&serv, 0, sizeof(sockaddr_in));
serv.sin_family = AF_INET;
serv.sin_port = htons(8421);
serv.sin_addr.s_addr = htons(0);
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ei = bind(server, (sockaddr*)&serv, sizeof(sockaddr_in));
ei = listen(server, 0); //ei = listen(server, 5);
printf("Server socket start listening ... \r\n");
while (1)
{
client = accept(server, (sockaddr*)&cli, &len);
printf("new client =%d\r\n",client); // 程序不停的打印信息, accept不停的返回,返回值为-57
//如果有客户端连接时,下面能正常接收客户端发来的数据,但是发送给客户端会一直block在send里面,客户端并没有收到数据。
rev_len=recv(client, data, 400, 0);
printf("received data:%s\r\n",data); //收到正常数据
send_len = send(client,connect_reply,strlen(connect_reply),0); // 一直block在这里
.......
}
怎么回事?
望相关人员能给与指导,谢谢。