那是因为你的SOCKET是阻塞方式的,如果你是WINDOWS的用户,你可以通过WSAAssyncSelect函数注册相应的网络事件,变成非阻塞方式,当有网络事件来了,调用相应的处理,如读:RECVFROM等。如果,你坚持阻塞的话,建议你用一个单独的线程来读,这样你读不到数据的话,只是阻塞一个线程,对你的主线程没有影响。