We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I would like to use the BSD sockets, but the accept function seems unusable! It will block if I am using RTX. I am not using round robin, so if I make a call to accept the whole system will stall.
I must be missing something here as it would be quite stupid for it to be impossible to come out of accept if there are no pending connections.
http://www.keil.com/support/man/docs/rlarm/rlarm_accept.htm says blocking mode is enabled if RTX is detected...
What is wrong with that? You can normally use a BSD socket from a different task than TCPnet main task. That should be more straight forward. The function will return, when the connection is accepted. See BSD_Server demo example.
Because, whilst there isnt a connection, that task will stall, waiting for accept to return.
Of course, this is a normal behavior. Each BSD socket is served by it's own task. The tasks communicate via intertask communication. That is a good application design concept.
If you need other stuff to handle, simply create a different task for this job.
The disadvantage is, of course, the need for extra stacks for applications that needs more than one socket.
I see! I didnt realize that was how you were supposed to use BSD sockets! Thanks
http://www.keil.com/support/man/docs/rlarm/rlarm_ioctlsocket.htm
Perfect! Thanks
I was looking at the BSD functionality for a while, never saw that function listed!!!
It is new, added recently.
I mean, I was looking yesterday. Is there a new update?
"It is new, added recently."
Very recently - I've just done a search of the recently released 4.22a and I couldn't find the function in any include file or the help text.
It was not yet implemented in MDK release 4.22a
If you want the updated libraries, then please send a request to support and ask for an update.