用tcp请求网页的实验,预期是接收到长度0时,就跳出循环。问题是打印接收到长度215后,就卡住了,等了1分钟才会打印收到长度0并跳出。为什么会等1分钟呢?
`
const char* msg = str.UTF8String;
ssize_t len = send(self.client, msg, strlen(msg), 0);
NSLog(@"发送了长度:%ld", len);
uint8_t buf[1024];
ssize_t count = 1;
do {
count = recv(self.client, buf, sizeof(buf), 0);
NSLog(@"收到长度:%zd", count);
} while (count != 0);
NSLog(@"skip");
`
打印:
`
2021-01-23 16:48:26.243796+0800 sock[1058:34645] 发送了长度:39
2021-01-23 16:48:26.262762+0800 sock[1058:34645] 收到长度:1024
2021-01-23 16:48:26.267321+0800 sock[1058:34645] 收到长度:1024
2021-01-23 16:48:26.278972+0800 sock[1058:34645] 收到长度:215
(这里等了很久,多次尝试都是差1分钟)
2021-01-23 16:49:26.255403+0800 sock[1058:34645] 收到长度:0
2021-01-23 16:49:26.256017+0800 sock[1058:34645] skip`
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…