This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
=?big5?q?=A6^=C2=D0:=20=20Re:=20Question=20about=20TCP=20layer=20in?==?big5?q?=20RedBoot?=
- From: Hunag Sun I <hsy04081 at yahoo dot com dot tw>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Fri, 7 Oct 2005 09:41:34 +0800 (CST)
- Subject: [ECOS] =?big5?q?=A6^=C2=D0:=20[ECOS]=20Re:=20Question=20about=20TCP=20layer=20in?==?big5?q?=20RedBoot?=
Thanks for your sharing.
Sam
--- Grant Edwards <grante@visi.com> 弧
> I've sent the answer to your question to the list so
> that
> others might also benefit from it.
>
http://www.catb.org/~esr/faqs/smart-questions.html#forum
>
> [Private support is available for a fee.]
>
> On Fri, Oct 07, 2005 at 01:47:34AM +0800, Hunag Sun
> I wrote:
>
> > Firstly, thank you for replying. In TCP
> layer,there are no
> > APIs,like bind(),accept(),socket(), these are
> necessary for
> > "server" application.
>
> Those are necessary for the BSD/Posix API. They are
> not
> necessary for a server application as long as there
> is a way to
> accomplish the same thing.
>
> > I can't see any server application and these APIs
> in
> > ./packages/redboot/current/src/net.
>
> Look in net_io.c
>
> In net_io_init() there's a call to __tcp_listen() to
> set up a
> tcp socket listing on a port.
>
> In net_io_test(), there's code that checks for new
> connections.
>
> In _net_io_getc_nonblock() there's code that checks
> for rx data
> and then calls __tcp_read().
>
> In general look for __tcp_xxxx() functions.
>
> > Could you tell how to find them out or any way
> possiable for
> > my "server" implementation.
>
> Here's a rough outline:
>
> 1) Declare a tcp_socket_t structure.
>
> 2) Call __tcp_listen() to attach that structure to
> a port.
>
> 3) Check the socket structure state field once in a
> while.
> When it changes to _ESTABLISHED, you've got a
> connection.
>
> 4) Periodically check for rx data, if there is
> some, call
> __tcp_read() to read data and then __tcp_write()
> to write
> data.
>
> 5) When you're done, call __tcp_close()
>
> 6) Wait for the state to transition to _CLOSED.
>
> 7) If you want to accept a new connection, goto 2)
>
>
> --
> Grant Edwards
> grante@visi.com
>
> --
> Before posting, please read the FAQ:
> http://ecos.sourceware.org/fom/ecos
> and search the list archive:
> http://ecos.sourceware.org/ml/ecos-discuss
>
>
___________________________________________________ 最新版 Yahoo!奇摩即時通訊 7.0 beta,免費網路電話任你打! http://messenger.yahoo.com.tw/beta.html
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss