Tcp connection Keep alive
i am creating a client server application. the server is already design
and in place waiting for connection from the client. Now in the client
section i would like to keep the connection alive throughout th life of
the application and the connection only closes when the main client
application close's or shutdown or the server closes it.
Currently every 10 seconds Server closes the TCP connection.I tried with
socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive,
true);
but it doesnt works for me.. Below is my code block
public TCPStreamDevice(string RemoteIPAddress, int RemotePort, string
SourceIPAddress, int SourcePortNo)
{
mIpAddress = RemoteIPAddress;
mPort = RemotePort;
mClient = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
System.Net.IPEndPoint LocalEndPoint = new
System.Net.IPEndPoint(System.Net.IPAddress.Parse(SourceIPAddress),
SourcePortNo);
mClient.Bind(LocalEndPoint);
mDataReceivedCallback = new
AsyncCallback(DataReceivedTCPCallback_Handler);
mBuffer = new byte[1024];
Description = new DeviceDescription();
}
and in handler i have ..
private void DataReceivedTCPCallback_Handler(IAsyncResult ar)
{
try
{
Socket client = (Socket)ar.AsyncState;
int bytesReceived = client.EndReceive(ar);
if (bytesReceived > 0)
{
to know transport level errors
//EngineInterface.reponseReceived(mBuffer,
false);
ReceiveCallBackFunc(mBuffer, bytesReceived);
client.BeginReceive(mBuffer, 0, 1024,
SocketFlags.None,
DataReceivedTCPCallback_Handler, client);
}
else
{
//disconnect
/* whrn there is no datapacket means no TCP connection is alive
now(how can i keep tCp alive here) */
}
}
No comments:
Post a Comment