struct
timeval
timeout = {
10
,
0
};
int
err =
0x00
;
err =
setsockopt
(
client_fd
, SOL_SOCKET, SO_SNDTIMEO,(
const
char
*)&timeout,
sizeof
(timeout));
if
(err !=
0x00
){
perror
(
"socket send conf err"
);
throw
(
""
);}
err =
setsockopt(
client_fd, SOL_SOCKET, SO_RCVTIMEO,(
const
char*)&timeout,
sizeof(timeout));
if(err !=
0x00){
perror(
"socket recv conf err");
throw(
"");}
在tcp中,一般情况下,只要服务器收不到数据,recv会是阻塞的.send函数也是阻塞的.
但是我们有时候想完成的功能是,服务器收不到数据,但是还是想往客户端发送数据怎么办.
tcp中提供setsockopt函数,将时间设置为10s,当tcpserver 10s没有收到数据的时候,将自动发送,而不是在等待接收.