How detect TCP/IP socket shutdown when ethernet cable is disconnected


 
Thread Tools Search this Thread
Top Forums Programming How detect TCP/IP socket shutdown when ethernet cable is disconnected
# 1  
Old 07-06-2010
How detect TCP/IP socket shutdown when ethernet cable is disconnected

Hi,

I want to code TCP/IP client/server in linux application capable to fastly detect ethernet cable disconnection in any condition.

So I have activate SO_KEEPALIVE options and set TCP_KEEPCNT, TCP_KEEPIDLE and TCP_KEEPINTVL to 1.

When I disconnect ethernet cable I have the following behaviour :
- If I wasn't sending data when I disconnect the cable, the TCP Keepavlie start and detect disconnection : expected behaviour.
- If I was sending data when I disconnect ethernet cable, I was notify that connection is down only after about 16 minutes : not expected behaviour, time very too long.

I have look with tcpdump the packet on the device. If I was sending data when I disconnect the ethernet cable, I packet is resend 8 times (normal behaviour of TCP) but after the last TCP request without acknoledge, I wasn't notify that the connection is down

Could you help me to solve this behaviour please?

Regards
# 2  
Old 07-07-2010
Try taking a look at the SIOCETHTOOL ioctl. This can be used to check if a physical connection is present on an Ethernet port.
# 3  
Old 07-08-2010
Hi gratuitous_arp

SIOCETHTOOL ioctl command allow to know is physical connection is present.

I my case, I have physical connection with a switch but the connection between the distant equipment will be broken during exchange. So, the TCP acknowledge will not be receive, TCP request will be resend as soon as tcp_retry is reach. After these retry, even if I have asked to send more data with the send command, no more data will be send from my computer to the distant computer (no more traces with tcpdump). After about 15 minutes, the recv command return with error "no route to host". But, I wanted to detect the socket disconnection after some secondes.

If you have any other idea, don't hesitate to propose it.

Regards
# 4  
Old 07-08-2010
TCP does best-effort delivery, which is why it has such obnoxiously long timeouts. I've seen it survive 10-minute network outages. It's really not designed to do what you want. Try pinging your host to see if it responds or not.
# 5  
Old 07-09-2010
Hi Corona688,

How can I ping the host in C++ application?

Thanks in advance for your response.
# 6  
Old 07-09-2010
ping uses icmp, port 5813 (as I remember)

It is far easier simply to call popen() with a ping command ( [code]/usr/bin/ping [remote address] [code]), read the return code, than to try to rewrite ping.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. IP Networking

Detect Socket timeout in tcpdump capture

Hello, I detect these errors in my logs : Socket timeout calling url http://server:port/bla/soap/selfcare/infoRapide] Unable to make proxyRequest I've made a tcpdump capture this way : tcpdump -i eth0 -s 0 -w /app/captura.pcap port 8080 But I'm fairly new in reading .pcap files with... (0 Replies)
Discussion started by: black_fender
0 Replies

2. IP Networking

Packets sent from Linux TCP socket

Hello, Our software is using a TCP socket (AF_INET, SOCK_STREAM) to communicate with an Ethernet device. When we send a message, the message object writes itself in full onto the socket's stream buffer before the software invokes send() from socket.h. I'm still researching, but have 2... (1 Reply)
Discussion started by: bix_20002000
1 Replies

3. Programming

[C++] [Unix] TCP non-blocking. Detect server disconnection procedure over, from client.

Hello! I searched forum for similar topic, with no luck, if you know one, delete this topic, and send me private message with link please. Little background: I have a lot of clients and one serwer. Client can make multiple connections on different ports and ips, but only one can be acctive... (2 Replies)
Discussion started by: ikeban
2 Replies

4. AIX

How to detect the network cable status with c programming on AIX

Hello, Is there any API or any other approach to detect whether the network cable is connected to the network adapter, say, en0, en1 or en2? The OS is AIX6.1. Thank you. (4 Replies)
Discussion started by: zephyrbj
4 Replies

5. UNIX for Dummies Questions & Answers

How to change ethernet cable of iscsi initiator (iscsi client)?

how to change ethernet cable of iscsi initiator (iscsi client) (0 Replies)
Discussion started by: pankajd
0 Replies

6. IP Networking

Two Servers via ethernet crossover cable

Hi, I'm trying to communicate two servers (HP DLProliant 380 G5) via a crossover cable, but I don't get them to ping each other. I am working in RHEL 4. These are the steps I've performed: 1) Plugged the crossover cables in eth2. (note: The cable is brand new. Also I built one myself... (3 Replies)
Discussion started by: jrodriguez365
3 Replies

7. IP Networking

How to handle unplugging ethernet cable in socket programming

Hi, I am trying to implement a server-client socket communication. My server and clients are in different PCs. During communications if the ethernet cable is removed from the server side it shows broken pipe due to unable to write on the socket. I want to know how to check whether the ethernet... (0 Replies)
Discussion started by: JagadishB
0 Replies

8. Red Hat

[RHEL4.5] server shutdown when I unplug the ethernet cable

hi.. I unplug my eth0 lan cable.. and suddenly my system shutdown... no idea :eek::confused: (3 Replies)
Discussion started by: flekzout
3 Replies

9. Programming

can-not detect TCP disconnects well

Hello everyone. Thanks for reading. I am using Ubuntu 7.04 to experience this problem: I have written my own programs that communicate to eachother and I am having a hard time detecting a TCP socket disconnect when the remote side's computer has a power-failure (for example). On the computer... (6 Replies)
Discussion started by: pjwhite
6 Replies

10. Solaris

Monitor displays Cable disconnected

Hi all This is my first post in this forums. I hope some one can help me with this my Sun Ultra 60 worked fine couple of months back when i used a dell (1280x1024). i move to a MN last month n bought a new sony monitor with (1280x1024) but when i connect it to the box it monitor displays... (1 Reply)
Discussion started by: venuavula
1 Replies
Login or Register to Ask a Question