06-18-2011
Quote:
Originally Posted by
Shang
Hi.
I am writing client - server application using TCP sockets.
I need some very basic functionality, namely: how to check if another "participant" of the connection is still present?
I want to handle situations, when client is gone, or server breaks down, etc.
You must first be prepared that the server close unexpectedly the connection (e.g. due to a crash), that is:
- read returns -1 and errno is set (e.g. ECONNRESET).
- write cause SIGPIPE to be sent to your process. The classical way to handle this is to ignore SIGPIPE, in which case write() shall fail and set errno to EPIPE.
This is however usually not enough to cover all scenarios (e.g. when the connection get physically broken, well simulated by plugging the "internet cable" out). Depending on our context, you may need to have a heartbeat mechanism, that is a way to exchange message between client and server to verify the aliveness of the connection.
If applicable, you may want to check the keep alive feature offered by TCP (there are however some pitfalls), our roll your own heartbeat mechanism in the protocol.
HTH, Loïc
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
We have developed a server program using TCP/IP Communication to communicate with another client program. After running for some days we find the TCP/IP connection from the server program is getting slower.
What i mean to say is since the send() function in the server program (it is... (2 Replies)
Discussion started by: rajesh_puru
2 Replies
2. UNIX for Dummies Questions & Answers
Hi,
Users are connecting thru a KCML Client to UNIX machine, and I want to know which TCP/UDP port that client uses? How can I check the port of a user logged in?
Regards,
Tayyab (2 Replies)
Discussion started by: tayyabq8
2 Replies
3. UNIX for Advanced & Expert Users
Hi Experts,
need help about release or refresh TCP Connection:
i have the sample like below :
application log connection:
0500 ( 192.168.0.1:36053) 00919 2007/05/10 23:30:25 112 13 2007/05/10 23:30:25 1969/12/31 17:00:00
0500 ( 192.168.0.1:36054) 00920 2007/05/10 23:30:26 000 00... (3 Replies)
Discussion started by: bucci
3 Replies
4. Shell Programming and Scripting
Hello,
I am trying to write a script in Perl which will send some data from a UNIX Box to a windows box. I am planning to create a TCP/IP communication port for the same. How do I go about this? Kindly help.
Regards,
Garric (50 Replies)
Discussion started by: garric
50 Replies
5. Programming
Hello. I would like to know how to close an existing tcp socket. I have read some stuff and learned how to create a socket and then close it but have not found anything about how to close an existing tcp socket created by another application. The situation is this: I have an ODBC server running and... (6 Replies)
Discussion started by: raidzero
6 Replies
6. Solaris
Hello,
Actually there are some bugs in application which does not close the TCP connection to other server though CORBA.
We need to kill that ESTABLISHED connections as new connection are not happeneing as the allocated ports were used and showing as ESTABLISHED
Is there any... (4 Replies)
Discussion started by: GIC1986
4 Replies
7. UNIX for Dummies Questions & Answers
Dear experts,
I am seeing a lot of TCP failed connection attempts from "netstat -s" on one of our servers.
How can I pin point what connection failed and what are the ports involved?
Any tools/commands I can dig in deeper to diag. what went wrong on these "failed connection attempts"?
... (2 Replies)
Discussion started by: cache51
2 Replies
8. IP Networking
Why this happens?
How to solve this?
$netstat -na |grep 9325
tcp 0 0 127.0.0.1:9325 127.0.0.1:9325 ESTABLISHED
When a client socket repeatedly tries to connect to an inactive(no server socket is listening on this port) local port,connect succeeds.
... (1 Reply)
Discussion started by: johnbach
1 Replies
9. Solaris
Hi,
I use solaris Unix .
I find there is some problem in application and it generate many "close-wait" tcp connect and stay in the server . it is generate by process id 7740
root@XX # netstat -an | grep CLOSE_WAIT | wc -l
285
root@XX # netstat -an | grep CLOSE_WAIT
10.158.35.4.34805 ... (2 Replies)
Discussion started by: abcdef
2 Replies
10. UNIX for Dummies Questions & Answers
I am trying to send json messages to a port on a linux server from a remote server running a .net program. I have one implementation running with successful incoming messages to port 1514. I tried to replicate the same thing but just to another port but cannot get it to work as I get the following... (3 Replies)
Discussion started by: unienewbie
3 Replies
LEARN ABOUT DEBIAN
shevek_server_connection
shevek::server< client, serverdata >::connection(3) Library Functions Manual shevek::server< client, serverdata >::connection(3)
NAME
shevek::server< client, serverdata >::connection -
Base of the client class which is implemented by the calling program.
SYNOPSIS
#include <server.hh>
Inherits shevek::refbase.
Public Member Functions
void continue_reading ()
This is called after in->unread (), to resume accepting data from this connection.
~connection ()
Destructor.
Public Attributes
Glib::RefPtr< shevek::fd > in
The input socket. The client can stop reading from this connection by calling in->unread ().
Glib::RefPtr< shevek::fd > out
The output socket. This is used to send data to the connection.
Protected Member Functions
connection ()
The client class can construct this object with its create function.
Glib::RefPtr< server< client,
serverdata > > get_server ()"
Access to the server object which hosts this client.
void disconnect ()
This can be called by the client object to close this connection.
Friends
class server< client, serverdata >
Detailed Description
template<typename client, typename serverdata>struct shevek::server< client, serverdata >::connection
Base of the client class which is implemented by the calling program.
A client object is created for every connection which is accepted. This class handles server administration and provides access to members
from the client class.
Author
Generated automatically by Doxygen for libshevek from the source code.
libshevek Fri May 11 2012 shevek::server< client, serverdata >::connection(3)