@@多线程程序,某线程中开socket侦听线程,阻塞方式 如何避免主程序结束时线程报错有关问题
@@多线程程序,某线程中开socket侦听线程,阻塞方式 如何处理主程序结束时线程报错问题?
如题
这种方式如何让程序退出时不报错?
如下,若是阻塞方式处理是不是好一些呢?如何处理?
------解决方案--------------------
关闭之前先closesocket(lsn_fd)应该就行了
------解决方案--------------------
主程序结束时
先关闭socket,再释放所有线程,最后退出。
如题
这种方式如何让程序退出时不报错?
如下,若是阻塞方式处理是不是好一些呢?如何处理?
if ((lsn_fd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
{
;
}
/*******绑定*****/
if (bind (lsn_srv_fd, (struct sockaddr *) &st_addr,sizeof (struct sockaddr)) == -1)
{
;
}
/****监听*******/
if (listen (lsn_srv_fd, 10) < 0)
{
;
}
while(1)
{
/*等待接受客户连接*/
for(int i = 0;i < 10;i++)
{
if ((fd = accept (lsn_fd, (struct sockaddr *) &str_addr, &socket_len)) < 0)
{
break;
}
else
{
;
}
//other function
}
Sleep(500);
}
------解决方案--------------------
关闭之前先closesocket(lsn_fd)应该就行了
------解决方案--------------------
主程序结束时
先关闭socket,再释放所有线程,最后退出。