NetSock_Open
Create a datagram (i.e., UDP) or stream (i.e., TCP) type socket.
Files
net_sock.h/net_sock.cnet_bsd.h/net_bsd.c
Prototypes
NET_SOCK_ID NetSock_Open(NET_SOCK_PROTOCOL_FAMILY protocol_family,
NET_SOCK_TYPE sock_type,
NET_SOCK_PROTOCOL protocol,
NET_ERR *p_err);
int socket (int protocol_family,
int sock_type,
int protocol);Arguments
protocol_family
This field establishes the socket protocol family domain. Always use NET_SOCK_FAMILY_IP_V4/PF_INET or NET_SOCK_FAMILY_IP_V6/PF_INET6 for TCP/IP sockets.
sock_type
Socket type:
NET_SOCK_TYPE_DATAGRAM/PF_DGRAM for datagram sockets (i.e., UDP)
NET_SOCK_TYPE_STREAM/PF_STREAM for stream sockets (i.e., TCP)
NET_SOCK_TYPE_DATAGRAM sockets preserve message boundaries. Applications that exchange single request and response messages are examples of datagram communication.
NET_SOCK_TYPE_STREAM sockets provides a reliable byte-stream connection, where bytes are received from the remote application in the same order as they were sent. File transfer and terminal emulation are examples of applications that require this type of protocol.
protocol
Socket protocol:
NET_SOCK_PROTOCOL_UDP/IPPROTO_UDP for UDP
NET_SOCK_PROTOCOL_TCP/IPPROTO_TCP for TCP
0 for default-protocol:
UDP for NET_SOCK_TYPE_DATAGRAM/PF_DGRAM
TCP for NET_SOCK_TYPE_STREAM/PF_STREAM
p_err
Pointer to variable that will receive the return error code from this function:
NET_SOCK_ERR_NONENET_SOCK_ERR_NONE_AVAILNET_SOCK_ERR_INVALID_FAMILYNET_SOCK_ERR_INVALID_PROTOCOLNET_SOCK_ERR_INVALID_TYPENET_INIT_ERR_NOT_COMPLETEDNET_ERR_FAULT_LOCK_ACQUIRE
The table below shows you the different ways you can specify the three arguments.
TCP/IP Protocol | Arguments | ||
protocol_family | sock_type | protocol | |
UDP |
|
|
|
UDP |
|
|
|
TCP |
|
|
|
TCP |
|
|
|
Returned Value
Returns a non-negative socket descriptor ID for the new socket connection, if successful;
NET_SOCK_BSD_ERR_OPEN/-1 otherwise.
Required Configuration
None.
Notes / Warnings
The family, type, and protocol of a socket is fixed once a socket is created. In other words, you cannot change a TCP stream socket to a UDP datagram socket (or vice versa) at run-time.
To connect two sockets, both sockets must share the same socket family, type, and protocol.