【发布时间】:2010-01-11 03:40:09
【问题描述】:
我遇到了套接字问题,如果您能提供帮助,我会很高兴...
问题是当我多次发送数据时它会阻塞,例如:
//--- client ---
//..
send(sock, buf_1, sizeof(buf_1), 0);
for (x10){
//...
send(sock, buf_2, sizeof(buf_2), 0);
if (recv(sock, buf_2, sizeof(buf_2), 0)<0) printf("recv_2() failed");
//...
}
for (x20){
//...
send(sock, buf_3, sizeof(buf_3), 0);
if (recv(sock, buf_3, sizeof(buf_3), 0)<0) printf("recv_3() failed");
//...
}
//...
//--- server---
//...
if (recv(sock, buf_1, sizeof(buf_1), 0)<0) printf("recv_1() failed");
for (x10){
if (recv(sock, buf_2, sizeof(buf_2), 0)<0) printf("recv_2() failed");
//...
send(sock, buf_2, sizeof(buf_2), 0);
}
for (x20){
if (recv(sock, buf_3, sizeof(buf_3), 0)<0) printf("recv_3() failed");
//...
send(sock, buf_3, sizeof(buf_3), 0);
}
//...
在第一个send()之后的交换块,有什么想法吗?
udp 是否也支持多个sendto()?
感谢您的回答-
【问题讨论】:
-
如果要异步发送,请使用异步调用。
-
服务器似乎在 recv() 处阻塞。打印第一个 recv() 得到的内容,并确保代码实际到达服务器中的第一个 send()。
-
感谢您的回复。在第一个 recv() 之后,它会阻塞。没有错误显示
标签: c++ c sockets network-programming