当前位置: 技术问答>linux和unix
linux下socket的一个问题
来源: 互联网 发布时间:2015-04-01
本文导语: 我在编写一个驱动程序,当建立好socket后,keepalive, 然后进行通讯,一切正常。 但我拔掉网线后,send仍然返回正确的值,只不过接受才返回错误。 有哪位能帮我,如何让网线断掉后,在第一次发送就返回错误? 附...
我在编写一个驱动程序,当建立好socket后,keepalive, 然后进行通讯,一切正常。
但我拔掉网线后,send仍然返回正确的值,只不过接受才返回错误。
有哪位能帮我,如何让网线断掉后,在第一次发送就返回错误?
附:我的socket设置。
struct tcp_opt *tp;
struct socket *listen_sock;
struct socket *accept_sock;
err = sock_create(PF_INET,SOCK_STREAM,IPPROTO_TCP,&listen_sock);
err = listen_sock->ops->bind(listen_sock,(struct sockaddr *) &agadder_v4, sizeof(agadder_v4));
listen_sock->sk->reuse = 1;
err = listen_sock->ops->listen(listen_sock,48);
err = accept_socket(listen_sock,&accept_sock);
tp = &accept_sock->sk->tp_pinfo.af_tcp;
tp->keepalive_probes = g_keepalive_probe;
tp->keepalive_time = g_keepalive_time;
tp->keepalive_intvl = g_keepalive_intval;
tcp_reset_keepalive_timer(accept_sock->sk,g_keepalive_time);
accept_sock->sk->keepopen = 1;
但我拔掉网线后,send仍然返回正确的值,只不过接受才返回错误。
有哪位能帮我,如何让网线断掉后,在第一次发送就返回错误?
附:我的socket设置。
struct tcp_opt *tp;
struct socket *listen_sock;
struct socket *accept_sock;
err = sock_create(PF_INET,SOCK_STREAM,IPPROTO_TCP,&listen_sock);
err = listen_sock->ops->bind(listen_sock,(struct sockaddr *) &agadder_v4, sizeof(agadder_v4));
listen_sock->sk->reuse = 1;
err = listen_sock->ops->listen(listen_sock,48);
err = accept_socket(listen_sock,&accept_sock);
tp = &accept_sock->sk->tp_pinfo.af_tcp;
tp->keepalive_probes = g_keepalive_probe;
tp->keepalive_time = g_keepalive_time;
tp->keepalive_intvl = g_keepalive_intval;
tcp_reset_keepalive_timer(accept_sock->sk,g_keepalive_time);
accept_sock->sk->keepopen = 1;
|
http://expert.csdn.net/Expert/topic/2000/2000962.xml?temp=.2382013