This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

SOCKADDR not found

I cannot find the SOCKADDR or SOCKADDR_IN structure used in many functions such as bind http://www.keil.com/support/man/docs/rlarm/rlarm_bind.htm
or
recvfrom http://www.keil.com/support/man/docs/rlarm/rlarm_recvfrom.htm

I have included <RTL.h> header file in which there is no trace of SOCKADDR at all. Please Help!!!

  • What version of MDK have you got installed?

    In 4.23 it's in \Keil\ARM\RV31\INC\RTL.h

    /* BSD Socket typedef's */
    typedef struct sockaddr {         /* << Generic Socket Address structure >>  */
      U16  sa_family;                 /* Address family                          */
      char sa_data[14];               /* Direct address (up to 14 bytes)         */
    } SOCKADDR;
    

    Check BSD socket functions.

  • Ahhh! I am using version 4.12. Thanks!!

    1 more question, if you dont mind :( :-

    I have a server socket program to recieve UDP data on Ubuntu (linux, basically) which I got it from www.linuxhowtos.org/.../socket.htm ; can I use the same program in keil to download it to my ARM7 (I know this sounds very stupid, but still)? If not , how do I use the rec or recv or listen or send functions in the RL library (which are strikingly similar to the socket program which I got from linuxhowtos )?
    I am already thankfull for your advice :D

  • "can I use the same program in keil to download it to my ARM7 ..."

    Almost certainly not.

    It's time to read the help files and look at the example programs.

  • Now I have got MDK 4.23 from here http://www.keil.com/arm/mdk.asp ; I still couldn't find SOCKADDR nor HOSTNET structures in RV31>INC>RTL.h . Is this because when I open the RTL.h it says in comments that the RL_ARM version is 4.12; does this also require an updated rl_arm library ? I have searched fathoms and fathoms in the Keil directory and the internet for examples that use such functions; although I have read the functions and their descriptions from the keil website. Can you provide some examples (from somewhere) :D ? I hope I am not being too greedy :|

  • "Now I have got MDK 4.23 ..."

    You may have got it, but have you actually installed it?

    Suggest you do a fresh install. RTL.h should be installed along with the rest and in should say it is version 4.23.

  • Ok, I'll do a fresh install. Am I correct in this : RTL has intentions to build functions similar to the functions in Linux, so that same algorithms can be implemented on ARM7 (this will really help me in my programming)

  • The basic TCP functions of RL and the method you communicate through them are somewhat different to the way you'd do it on something like linux.

    As I mentioned before, you might want to check out the BSD socket functions. This relatively new collection of functions have far greater similarity to Linux.

  • The problem was that I was installing MDK 4.23 and then the rl-arm library v 4.12 , so the RTL.h was being replaced with an older version; I didn't know that in the MDK 4.23 the library came integrated, now I know. Thanks to you.
    After seeing the BSD example projects, I have a question : does BSD implementation compulsorily require a RTOS (as in the example they have included rtx.h and used functions prototyped in it)? As far as I know implementation of BSD on linux distributions,say Ubuntu requires an OS but otherwise for using BSD on embedded platforms, we wont require an OS (hope I'm correct.)

  • Err... Linux is an OS - surely?!

    For RL-ARM, look at the feature list: http://www.keil.com/rl-arm/rl-tcpnet.asp

  • @Andrew : sorry didn't get you. Probably you are saying that linux is not an OS but a "kernel".

    My question really is that can I use BSD functions without system call functions like os_tsk_create_user () (which is used in the BSD examples for task switching) or os_tsk_create() (which is used in the BSD example to create a timer_task); can't I just use the BSD functions in my main() function without any sort of task switching ?

  • "can't I just use the BSD functions in my main() function without any sort of task switching ?"

    Not seen anything to say that the RTX is required with the BSD functions. A look at the header files suggests that TCP and/or UDP support must also be included (which would make sense).

  • Yes, BSD functions can be used without RTX in non-blocking mode.