在一个socket使用的过程中,可不可以切换?
可以切换啊。不过要进行相应的处理。
unsigned long ul = 1;
while(true)
{
AcceptSocket = accept(ListenSocket, NULL, NULL);
if ( 0 == ul )
{
ul = 1;
}
else
{
ul = 0;
}
//切换模式
iRet = ioctlsocket(ListenSocket, FIONBIO, &ul);
closesocket(AcceptSocket);
}
阻塞非阻塞肯定与你的实现要求有关!
如果必须是阻塞工作方式,前一消息必须处理完才处理后一消息的话,你换成非阻塞对你的处理就会有问题;
如果是非阻塞方式,来了消息就处理,无先后顺序或是先后顺序处理逻辑,而你换成阻塞方式,恐怕会影响你的通信能力!
关键还是看业务要求!不要随意切换,且处理方式上会有区别