linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: ronkhu <ronkhu@ntsp.nec.co.jp>
To: linux-c-programming@vger.kernel.org
Subject: Re: another socket connection question
Date: Thu, 03 Jul 2003 11:45:19 +0800	[thread overview]
Message-ID: <3F03A6CF.9010407@hq.ntsp.nec.co.jp> (raw)
In-Reply-To: 3F039FB2.3070600@hq.ntsp.nec.co.jp

( after successful connection)how about  making the client wait
for a certain u-can-now-send-me-requests message
from the server before proceeding in sending requests?

Lejanson C. Go wrote:

>
>             Client                       Server
>               .                             .
>               .                             .
>               .    retry connect until      .
>               o---------------------------->.
>               .         success             .
>               .                             .
>               .<----------------------------o
>               .                             .
>               .                             .
>               .                             .
>               .                             .
>               .      getServerNodeId        .
>               o---------------------------->.  Server wont be ready
>               .    retry until success      .  until some time
>               .                             .
>               .                             .
>
>
>
> I am trying to make a client server application where a client
> is trying to get the nodeId of the server.
>
> The server opens up its ports and my client connects to the server.
> If unsuccessful the client side will retry to connect until it is
> successful.
>
> Considering the client is connected. Client application then will
> send a GetServerNodeId request to the server.
>
> What if the server is not ready to receive any request, how will
> I make my GetServerNodeId request to be sent without errors? My
> client application displays "Broken Pipe" when I run the client.
>
>
> Steps in Testing:
>
> 1. run server
> 2. client connects to server until success
> 3. server is not ready to read requests
> 4. getServerNodeId - retry until success.
>
>
> My problem revolves on my getServerNodeId request. Since my client
> application have no way of knowing if the server is already accepting
> requests from the client.
>
> Can anyone help me please?
>
>
> Here is a code snippet of the getServerNodeId :
>
>
> //--------------------- SNIP -----------------------------//
>
> inti sendNMCommand( void *data, inti size )
> {
>   int ret = -1;
>
>   if (nmCmdSockConnected == FALSE)
>   {
>     return (ERR);
>   }
>
>   ret = write( nmCmdSock, data, size );
>
>   if (ret != size)
>   {
>       return (ERR);
>   }
>
>   return( ret );
> }
>
>
> inti getServerNodeId(void)
> {
>   MSG_HEADER     header;
>   NODE_INFO      node_info;
>   int    stat;
>   char   *str;
>   struct in_addr tmpAddr;
>
>   memset( &header, 0, sizeof(header));
>   memset( &node_info, 0, sizeof(node_info));
>
>   header.msg_type     = CLI_NM_MSG_TYPE_NODE_ID | 
> CLI_NM_MSG_TYPE_COMMAND_SHOW;
>   header.msg_size = sizeof(header);
>
>   stat = sendNMCommand( &header, sizeof(header) );
>
>   if (stat == ERR )
>   {
>     return(ERR);
>   }
>
>   memset( &header, 0, sizeof(header));
>
>   stat = read(nmCmdSock, &header, sizeof(header));
>
>   if (stat <= 0)
>   {
>     return (ERR);
>   }
>
>   if (header.msg_ret_code != CLI_NM_MSG_RETCODE_SUCCESS)
>   {
>     return (ERR);
>   }
>
>   if (header.msg_type == (CLI_NM_MSG_TYPE_NODE_ID | 
> CLI_NM_MSG_TYPE_COMMAND_SHOW))
>   {
>     stat = recvNMData( &node_info, sizeof(node_info), &nmCmdSock);
>     if (stat == ERR)
>     {
>       return (ERR);
>     }
>
>     tmpAddr.s_addr = node_info.node_id;
>     str = inet_ntoa(tmpAddr);
>     setPrompt(str);
>   }
>   else
>   {
>     return (ERR);
>   }
>   return(OK);
> }
>
>
> //--------------------- SNIP -----------------------------//
>
>
>
>
>
> ->end.
>
>
>
>
>
>
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe 
> linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>




  reply	other threads:[~2003-07-03  3:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-03  3:14 another socket connection question Lejanson C. Go
2003-07-03  3:45 ` ronkhu [this message]
2003-07-03  6:12 ` Glynn Clements

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F03A6CF.9010407@hq.ntsp.nec.co.jp \
    --to=ronkhu@ntsp.nec.co.jp \
    --cc=linux-c-programming@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).