Hi,
I have a server program running under linux-2.6.15 on ARM9. I have two sockets
4096 and 4097 which accept connections from other PCs and do
send/receive data. I have set the following setsockopt for the two sockets
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on,sizeof(on));
setsockopt(sockfd,IPPROTO_TCP,TCP_NODELAY,&on,sizeof(int));
setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &keep_alive_time,
sizeof(keep_alive_time));
alive_time = 4;
setsockopt(sockfd,IPPROTO_TCP,TCP_KEEPIDLE,&alive_time,sizeof(int));
I have no other sockets so I have set the sysctl entries
/proc/sys/net/ipv4/tcp_keepalive_probes ---> 3
/proc/sys/net/ipv4/tcp_keepalive_intvl ---> 60
So that the connections get closed if they are idle for 7 minutes.
The "alive_time" can be programmed so that different sockets can have different
TCP keepidle times.
If I connect to 4096 from a Windows PC and send data then everything works
fine.
But when I connect to 4097 also and transfer, both my connections at server
side are getting closed in between data transfer.
>From the ethereal capture I came to know that TCP keep alive probes were sent
>on both sockets after 4 minutes of starting data transfer,
and after that two times with a gap of 60secs.
How can TCP keepalive kickoff when there is data transfer going on
socket. And also I am not getting TCP_keepalive_ack for the keepalive
probes sent.
One more observation is that when I do data transfer from 4096 socket
to PC socket, keepalive timer is not triggering.
Why TCP_KEEPIDLE is not working on both directions??
And also, the PC is not replying to the Keep Alive probes.
Regards,
Mohan
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html