[英]Socket unable to detect disconnect
我已经编写了一个服务器代码,该代码接受通过客户端通过wifi的连接。 wifi插座在显示为ttyAMA0的Wifi加密狗上打开。
我创建一个套接字
serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(PORT);
然后我照常接受...
while(1) { new_fd = accept(sfd,(struct sockaddr*)&client_addr,&len); ... ... }
在我的一个读者线程中,我正在这样做:
void* Command2Buff(void *args) { ... while(1) { .... clientBytes = recv(str_fd.new_conn_fd,&temp,1); if(clientBytes == 0 || clientBytes == -1) { ... } globalCmdbuf[wr] = temp; } }
因此recv应该检测到远程连接已关闭。 当我从Android手机关闭wifi时,嵌入式计算机上的代码就会挂起。
我打开了手机上的wifi,可以连接到插座,但是没有数据传输。
serv_addr.sin_addr.s_addr = WLAN;
根据EJP的建议,我使用SO_RCVTIMEO从我这一侧关闭了连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.