是这样的,你的通信是同步的,所以recv一直处于接收状态,只有接收到数据才会执行下一步。
改进:
可以循环等待接收,在循环里可以处理recv:
1、使用setsockopt设置超时时间。
2、添加select等异步处理(里面也可以设置时间)。
PS:个人建议:你若急着完成任务可以采用1,若你是学习状态,可以学习一下select等异步通信
提供一下你的完整客户端和服务端的代码。但看这个代码没什么问题。
但是根据你的描述,到recv的时候执行不下去,可能是因为没有接受到服务端所发送的消息导致的。
因为recv函数是一个阻塞函数,当这个函数没有收到消息时会一直等待,当收到消息之后才能继续向下执行。