How to use the C socket API in C++ on z/OS

Diposting pada

How to use the C socket API in C++ on z/OS
I’m having issues getting the C sockets API to work properly in C++ on z/OS.
Although I am including sys/socket.h, I still get compile time errors telling me that AF_INET is not defined.
Am I missing something obvious, or is this related to the fact that being on z/OS makes my problems much more complicated?
I discovered that there is an #ifdef that I’m hitting. Apparently z/OS isn’t happy unless I define which “type” of sockets I’m using with:
#define _OE_SOCKETS
Now, I personally have no idea what this _OE_SOCKETS is actually for, so if any z/OS sockets programmers are out there (all 3 of you), perhaps you could give me a rundown of how this all works?
Test App
#include <sys/socket.h>

int main()
{
return AF_INET;
}

Compile/Link Output:
cxx -Wc,xplink -Wl,xplink -o inet_test inet.C

“./inet.C”, line 5.16: CCN5274 (S) The name lookup for “AF_INET” did not find a declaration.
CCN0797(I) Compilation failed for file ./inet.C. Object file not created.
A check of sys/sockets.h does include the definition I need, and as far as I can tell, it is not being blocked by any #ifdef statements.
I have however noticed it contains the following:
#ifdef __cplusplus
extern “C” {
#endif
which encapsulates basically the whole file? Not sure if it matters.

 

Answer
I’ve had no trouble using the BSD sockets API in C++, in GNU/Linux. Here’s the sample program I used:
#include <sys/socket.h>

int
main()
{
return AF_INET;
}
So my take on this is that z/OS is probably the complicating factor here, however, because I’ve never used z/OS before, much less programmed in it, I can’t say this definitively. 😛

 48 total views,  1 views today

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *