CONTENT
  • CHANGES
Szukaj
counter

#top libsocknet


Narzędzia Sieciowe >> libnet - library network protocols >> libsocknet - library network connections

#top Predefined Constants


#top __SOCKADDR_COMMON_SIZE


Definicja typu __SOCKADDR_COMMON_SIZE znajduje się w pliku nagłówkowym bits/sockaddr.h.
Definicja typu __SOCKADDR_COMMON_SIZE jest następująca:
/* This macro is used to declare the initial common members
   of the data types used for socket addresses, `struct sockaddr',
   `struct sockaddr_in', `struct sockaddr_un', etc.  *:
#define __SOCKADDR_COMMON_SIZE  (sizeof (unsigned short int))



#top _SS_PADSIZE


Definicja typu _SS_PADSIZE znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu _SS_PADSIZE jest następująca:
#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))



#top _SS_SIZE


Definicja typu _SS_SIZE znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu _SS_SIZE jest następująca:
#define _SS_SIZE 128



#top AF Address families


Definicja typu AF_INET, AF_INET6, AF_LOCAL, AF_FILE, AF_UNIX, ... znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu AF_INET, AF_INET6, AF_LOCAL, AF_FILE, AF_UNIX, ... jest następująca:
/* Address families.  */
#define AF_UNSPEC   PF_UNSPEC
#define AF_LOCAL    PF_LOCAL
#define AF_UNIX     PF_UNIX
#define AF_FILE     PF_FILE
#define AF_INET     PF_INET
#define AF_AX25     PF_AX25
#define AF_IPX      PF_IPX
#define AF_APPLETALK    PF_APPLETALK
#define AF_NETROM   PF_NETROM
#define AF_BRIDGE   PF_BRIDGE
#define AF_ATMPVC   PF_ATMPVC
#define AF_X25      PF_X25
#define AF_INET6    PF_INET6
#define AF_ROSE     PF_ROSE
#define AF_DECnet   PF_DECnet
#define AF_NETBEUI  PF_NETBEUI
#define AF_SECURITY PF_SECURITY
#define AF_KEY      PF_KEY
#define AF_NETLINK  PF_NETLINK
#define AF_ROUTE    PF_ROUTE
#define AF_PACKET   PF_PACKET
#define AF_ASH      PF_ASH
#define AF_ECONET   PF_ECONET
#define AF_ATMSVC   PF_ATMSVC
#define AF_SNA      PF_SNA
#define AF_IRDA     PF_IRDA
#define AF_PPPOX    PF_PPPOX
#define AF_WANPIPE  PF_WANPIPE
#define AF_BLUETOOTH    PF_BLUETOOTH
#define AF_MAX      PF_MAX

Powiązane:
AF Address families, PF Protocol families, enum __socket_type, IP protocols,



#top PF Protocol families


Definicja typu PF_INET, PF_INET6, PF_LOCAL, PF_FILE, PF_UNIX, ... znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu PF_INET, PF_INET6, PF_LOCAL, PF_FILE, PF_UNIX, ... jest następująca:
/* Protocol families.  */
#define PF_UNSPEC   0   /* Unspecified.  */
#define PF_LOCAL    1   /* Local to host (pipes and file-domain).  */
#define PF_UNIX     PF_LOCAL /* Old BSD name for PF_LOCAL.  */
#define PF_FILE     PF_LOCAL /* Another non-standard name for PF_LOCAL.  */
#define PF_INET     2   /* IP protocol family.  */
#define PF_AX25     3   /* Amateur Radio AX.25.  */
#define PF_IPX      4   /* Novell Internet Protocol.  */
#define PF_APPLETALK    5   /* Appletalk DDP.  */
#define PF_NETROM   6   /* Amateur radio NetROM.  */
#define PF_BRIDGE   7   /* Multiprotocol bridge.  */
#define PF_ATMPVC   8   /* ATM PVCs.  */
#define PF_X25      9   /* Reserved for X.25 project.  */
#define PF_INET6    10  /* IP version 6.  */
#define PF_ROSE     11  /* Amateur Radio X.25 PLP.  */
#define PF_DECnet   12  /* Reserved for DECnet project.  */
#define PF_NETBEUI  13  /* Reserved for 802.2LLC project.  */
#define PF_SECURITY 14  /* Security callback pseudo AF.  */
#define PF_KEY      15  /* PF_KEY key management API.  */
#define PF_NETLINK  16
#define PF_ROUTE    PF_NETLINK /* Alias to emulate 4.4BSD.  */
#define PF_PACKET   17  /* Packet family.  */
#define PF_ASH      18  /* Ash.  */
#define PF_ECONET   19  /* Acorn Econet.  */
#define PF_ATMSVC   20  /* ATM SVCs.  */
#define PF_SNA      22  /* Linux SNA Project */
#define PF_IRDA     23  /* IRDA sockets.  */
#define PF_PPPOX    24  /* PPPoX sockets.  */
#define PF_WANPIPE  25  /* Wanpipe API sockets.  */
#define PF_BLUETOOTH    31  /* Bluetooth sockets.  */
#define PF_MAX      32  /* For now..  */

Powiązane:
AF Address families, PF Protocol families, enum __socket_type, IP protocols,



#top ULONG_MAX


Definicja typu ULONG_MAX znajduje się w pliku nagłówkowym limits.h.
Definicja typu ULONG_MAX jest następująca:
/* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
#  if __WORDSIZE == 64
#   define ULONG_MAX 18446744073709551615UL
#  else
#   define ULONG_MAX 4294967295UL
#  endif



#top Datatypes / MACROS


#top enum __socket_type


Definicja typu enum __socket_type znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu enum __socket_type jest następująca:
/* Types of sockets.  */
enum __socket_type
{
  SOCK_STREAM = 1,      /* Sequenced, reliable, connection-based
                   byte streams.  */
#define SOCK_STREAM SOCK_STREAM
  SOCK_DGRAM = 2,       /* Connectionless, unreliable datagrams
                   of fixed maximum length.  */
#define SOCK_DGRAM SOCK_DGRAM
  SOCK_RAW = 3,         /* Raw protocol interface.  */
#define SOCK_RAW SOCK_RAW
  SOCK_RDM = 4,         /* Reliably-delivered messages.  */
#define SOCK_RDM SOCK_RDM
  SOCK_SEQPACKET = 5,       /* Sequenced, reliable, connection-based,
                   datagrams of fixed maximum length.  */
#define SOCK_SEQPACKET SOCK_SEQPACKET
  SOCK_PACKET = 10      /* Linux specific way of getting packets
                   at the dev level.  For writing rarp and
                   other similar things on the user level. */
#define SOCK_PACKET SOCK_PACKET
};

Powiązane:
AF Address families, PF Protocol families, enum __socket_type, IP protocols,



#top __ss_aligntype


Definicja typu __ss_aligntype znajduje się w pliku nagłówkowym bits/socket.h.
Definicja typu __ss_aligntype jest następująca:
/* Structure large enough to hold any socket address (with the historical
   exception of AF_UNIX).  We reserve 128 bytes.  */
#if ULONG_MAX > 0xffffffff
# define __ss_aligntype __uint64_t
#else
# define __ss_aligntype __uint32_t
#endif



#top __SOCKADDR_COMMON


Definicja typu __SOCKADDR_COMMON znajduje się w pliku nagłówkowym bits/sockaddr.h.
Definicja typu __SOCKADDR_COMMON jest następująca:
/* This macro is used to declare the initial common members
   of the data types used for socket addresses, `struct sockaddr',
   `struct sockaddr_in', `struct sockaddr_un', etc.  *:
#define __SOCKADDR_COMMON(sa_prefix) \
  sa_family_t sa_prefix##family



#top errno


Deklaracja globalnej zmiennej (makra) errno znajduje się w pliku nagłówkowym errno.h.
Deklaracja globalnej zmiennej (makra) errno jest następująca:
/* Declare the `errno' variable, unless it's defined as a macro by
   bits/errno.h.  This is the case in GNU, where it is a per-thread
   variable.  This redeclaration using the macro still works, but it
   will be a function declaration without a prototype and may trigger
   a -Wstrict-prototypes warning.  */
#ifndef errno
extern int errno;
#endif

Opis:
Globalna zmienna errno (errno, errno) jest makrem przechowującym informację o kodzie błędu jaki wystąpił podczas ostatniego wywoływania najczęściej funkcji systemowej (System call/syscall). Kod błędu ustawiony w makrze errno pozwala poinformować program/użytkownika o przyczynie niepowodzenia ostanio wykonywanej operacji. Bardziej czytelną informację o kodzie można uzyskać za pomocą funkcji:
perror() (perror(), perror()) wyświetlającej na standardowym strumieniu błędów czytelną informację o kodzie błędu uzyskaną za pomocą funkcji strerror(),
strerror() (strerror(), strerror()) zwracającej czytelny informację o kodzie błędu,



#top in_addr_t


Definicja typu in_addr_t znajduje się w pliku nagłówkowym netinet/in.h.
Definicja typu in_addr_t jest następująca:
/* Internet address.  */
typedef uint32_t in_addr_t;

Powiązane:
in_addr_t, in_port_t,



#top in_port_t


Definicja typu in_port_t znajduje się w pliku nagłówkowym netinet/in.h.
Definicja typu in_port_t jest następująca:
/* Type to represent a port.  */
typedef uint16_t in_port_t;

Powiązane:
in_addr_t, in_port_t,



#top IP protocols


Definicja typu IPPROTO_IP znajduje się w pliku nagłówkowym netinet/in.h.
Definicja typu IPPROTO_IP jest następująca:
/* Standard well-defined IP protocols.  */
enum
  {
    IPPROTO_IP = 0,    /* Dummy protocol for TCP.  */
#define IPPROTO_IP      IPPROTO_IP
    IPPROTO_HOPOPTS = 0,   /* IPv6 Hop-by-Hop options.  */
#define IPPROTO_HOPOPTS     IPPROTO_HOPOPTS
    IPPROTO_ICMP = 1,      /* Internet Control Message Protocol.  */
#define IPPROTO_ICMP        IPPROTO_ICMP
    IPPROTO_IGMP = 2,      /* Internet Group Management Protocol. */
#define IPPROTO_IGMP        IPPROTO_IGMP
    IPPROTO_IPIP = 4,      /* IPIP tunnels (older KA9Q tunnels use 94).  */
#define IPPROTO_IPIP        IPPROTO_IPIP
    IPPROTO_TCP = 6,       /* Transmission Control Protocol.  */
#define IPPROTO_TCP     IPPROTO_TCP
    IPPROTO_EGP = 8,       /* Exterior Gateway Protocol.  */
#define IPPROTO_EGP     IPPROTO_EGP
    IPPROTO_PUP = 12,      /* PUP protocol.  */
#define IPPROTO_PUP     IPPROTO_PUP
    IPPROTO_UDP = 17,      /* User Datagram Protocol.  */
#define IPPROTO_UDP     IPPROTO_UDP
    IPPROTO_IDP = 22,      /* XNS IDP protocol.  */
#define IPPROTO_IDP     IPPROTO_IDP
    IPPROTO_TP = 29,       /* SO Transport Protocol Class 4.  */
#define IPPROTO_TP      IPPROTO_TP
    IPPROTO_IPV6 = 41,     /* IPv6 header.  */
#define IPPROTO_IPV6        IPPROTO_IPV6
    IPPROTO_ROUTING = 43,  /* IPv6 routing header.  */
#define IPPROTO_ROUTING     IPPROTO_ROUTING
    IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header.  */
#define IPPROTO_FRAGMENT    IPPROTO_FRAGMENT
    IPPROTO_RSVP = 46,     /* Reservation Protocol.  */
#define IPPROTO_RSVP        IPPROTO_RSVP
    IPPROTO_GRE = 47,      /* General Routing Encapsulation.  */
#define IPPROTO_GRE     IPPROTO_GRE
    IPPROTO_ESP = 50,      /* encapsulating security payload.  */
#define IPPROTO_ESP     IPPROTO_ESP
    IPPROTO_AH = 51,       /* authentication header.  */
#define IPPROTO_AH      IPPROTO_AH
    IPPROTO_ICMPV6 = 58,   /* ICMPv6.  */
#define IPPROTO_ICMPV6      IPPROTO_ICMPV6
    IPPROTO_NONE = 59,     /* IPv6 no next header.  */
#define IPPROTO_NONE        IPPROTO_NONE
    IPPROTO_DSTOPTS = 60,  /* IPv6 destination options.  */
#define IPPROTO_DSTOPTS     IPPROTO_DSTOPTS
    IPPROTO_MTP = 92,      /* Multicast Transport Protocol.  */
#define IPPROTO_MTP     IPPROTO_MTP
    IPPROTO_ENCAP = 98,    /* Encapsulation Header.  */
#define IPPROTO_ENCAP       IPPROTO_ENCAP
    IPPROTO_PIM = 103,     /* Protocol Independent Multicast.  */
#define IPPROTO_PIM     IPPROTO_PIM
    IPPROTO_COMP = 108,    /* Compression Header Protocol.  */
#define IPPROTO_COMP        IPPROTO_COMP
    IPPROTO_SCTP = 132,    /* Stream Control Transmission Protocol.  */
#define IPPROTO_SCTP        IPPROTO_SCTP
    IPPROTO_RAW = 255,     /* Raw IP packets.  */
#define IPPROTO_RAW     IPPROTO_RAW
    IPPROTO_MAX
  };

Powiązane:
AF Address families, PF Protocol families, enum __socket_type, IP protocols,



#top sa_family_t


Definicja typu sa_family_t znajduje się w pliku nagłówkowym bits/sockaddr.h.
Definicja typu sa_family_t jest następująca:
/* POSIX.1g specifies this type name for the `sa_family' member.  */
typedef unsigned short int sa_family_t;



#top size_t


Definicja typu size_t znajduje się w pliku nagłówkowym /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h.
Definicja typu size_t jest następująca:
/* Unsigned type of `sizeof' something.  */

/* Define this type if we are doing the whole job,
   or if we want this type in particular.  */
#if defined (_STDDEF_H) || defined (__need_size_t)
#ifndef __size_t__  /* BeOS */
#ifndef __SIZE_T__  /* Cray Unicos/Mk */
#ifndef _SIZE_T /* in case <sys/types.h> has defined it. */
#ifndef _SYS_SIZE_T_H
#ifndef _T_SIZE_
#ifndef _T_SIZE
#ifndef __SIZE_T
#ifndef _SIZE_T_
#ifndef _BSD_SIZE_T_
#ifndef _SIZE_T_DEFINED_
#ifndef _SIZE_T_DEFINED
#ifndef _BSD_SIZE_T_DEFINED_    /* Darwin */
#ifndef _SIZE_T_DECLARED    /* FreeBSD 5 */
#ifndef ___int_size_t_h
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
#define __size_t__  /* BeOS */
#define __SIZE_T__  /* Cray Unicos/Mk */
#define _SIZE_T
#define _SYS_SIZE_T_H
#define _T_SIZE_
#define _T_SIZE
#define __SIZE_T
#define _SIZE_T_
#define _BSD_SIZE_T_
#define _SIZE_T_DEFINED_
#define _SIZE_T_DEFINED
#define _BSD_SIZE_T_DEFINED_    /* Darwin */
#define _SIZE_T_DECLARED    /* FreeBSD 5 */
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
/* __size_t is a typedef on FreeBSD 5!, must not trash it. */
#else
#define __size_t
#endif
#ifndef __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int
#endif
#if !(defined (__GNUG__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;
#ifdef __BEOS__
typedef long ssize_t;
#endif /* __BEOS__ */
#endif /* !(defined (__GNUG__) && defined (size_t)) */
#endif /* __size_t */
#endif /* _SIZET_ */
#endif /* _GCC_SIZE_T */
#endif /* ___int_size_t_h */
#endif /* _SIZE_T_DECLARED */
#endif /* _BSD_SIZE_T_DEFINED_ */
#endif /* _SIZE_T_DEFINED */
#endif /* _SIZE_T_DEFINED_ */
#endif /* _BSD_SIZE_T_ */
#endif /* _SIZE_T_ */
#endif /* __SIZE_T */
#endif /* _T_SIZE */
#endif /* _T_SIZE_ */
#endif /* _SYS_SIZE_T_H */
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
#undef  __need_size_t
#endif /* _STDDEF_H or __need_size_t.  */



#top SOCKET


Definicja typu SOCKET znajduje się w pliku nagłówkowym libsocknet.h.
Definicja typu SOCKET jest następująca:
#if defined(__WIN32__) || defined(WIN32) || defined(_WIN32)
/*typedef u_int SOCKET;*/
/*
C:/Dev-CPP/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winsock.h:32: error:
  conflicting types for 'SOCKET'
../../libinc/datatypes.h:33: error: previous declaration of 'SOCKET' was here
*/
#else
typedef int SOCKET;
#endif



#top struct in_addr


Deklaracja struktury struct in_addr znajduje się w pliku nagłówkowym netinet/in.h.
Deklaracja struktury struct in_addr jest następująca:
/* Internet address.  */
struct in_addr
  {
    in_addr_t s_addr;
  };



#top struct in6_addr


Deklaracja struktury struct in6_addr znajduje się w pliku nagłówkowym netinet/in.h.
Deklaracja struktury struct in6_addr jest następująca:
/* IPv6 address */
struct in6_addr
  {
    union
      {
    uint8_t u6_addr8[16];
    uint16_t u6_addr16[8];
    uint32_t u6_addr32[4];
      } in6_u;
#define s6_addr         in6_u.u6_addr8
#define s6_addr16       in6_u.u6_addr16
#define s6_addr32       in6_u.u6_addr32
  };

Powiązane:
struct in_addr, struct in6_addr,



#top struct sockaddr


Deklaracja struktury struct sockaddr znajduje się w pliku nagłówkowym bits/socket.h.
Deklaracja struktury struct sockaddr jest następująca:
/* Structure describing a generic socket address.  */
struct sockaddr
  {
    __SOCKADDR_COMMON (sa_);    :* Common data: address family and length.  */
    char sa_data[14];       /* Address data.  */
  };

Powiązane:
struct sockaddr, struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un, struct sockaddr_storage,



#top struct sockaddr_in


Deklaracja struktury struct sockaddr_in znajduje się w pliku nagłówkowym netinet/in.h.
Deklaracja struktury struct sockaddr_in jest następująca:
/* Structure describing an Internet socket address.  */
struct sockaddr_in
  {
    __SOCKADDR_COMMON (sin_);
    in_port_t sin_port;         :* Port number.  */
    struct in_addr sin_addr;        :* Internet address.  */

    /* Pad to size of `struct sockaddr'.  *:
    unsigned char sin_zero[sizeof (struct sockaddr) -
               __SOCKADDR_COMMON_SIZE -
               sizeof (in_port_t) -
               sizeof (struct in_addr)];
  };

Powiązane:
struct sockaddr, struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un, struct sockaddr_storage,



#top struct sockaddr_in6


Deklaracja struktury struct sockaddr_in6 znajduje się w pliku nagłówkowym netinet/in.h.
Deklaracja struktury struct sockaddr_in6 jest następująca:
/* Ditto, for IPv6.  */
struct sockaddr_in6
  {
    __SOCKADDR_COMMON (sin6_);
    in_port_t sin6_port;    :* Transport layer port # */
    uint32_t sin6_flowinfo; :* IPv6 flow information */
    struct in6_addr sin6_addr;  :* IPv6 address */
    uint32_t sin6_scope_id; :* IPv6 scope-id */
  };

Powiązane:
struct sockaddr, struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un, struct sockaddr_storage,



#top struct sockaddr_storage


Deklaracja struktury struct sockaddr_storage znajduje się w pliku nagłówkowym bits/socket.h.
Deklaracja struktury struct sockaddr_storage jest następująca:
struct sockaddr_storage
  {
    __SOCKADDR_COMMON (ss_);    /* Address family, etc.  */
    __ss_aligntype __ss_align;  /* Force desired alignment.  */
    char __ss_padding[_SS_PADSIZE];
  };

Powiązane:
struct sockaddr, struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un, struct sockaddr_storage,



#top struct sockaddr_un


Deklaracja struktury struct sockaddr_un znajduje się w pliku nagłówkowym sys/un.h.
Deklaracja struktury struct sockaddr_un jest następująca:
/* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket.  *:
struct sockaddr_un
  {
    __SOCKADDR_COMMON (sun_);
    char sun_path[108];     /* Path name.  */
  };

Powiązane:
struct sockaddr, struct sockaddr_in, struct sockaddr_in6, struct sockaddr_un, struct sockaddr_storage,



#top uint8_t


Definicja typu uint8_t znajduje się w pliku nagłówkowym stdint.h.
Definicja typu uint8_t jest następująca:
/* Unsigned.  */
typedef unsigned char       uint8_t;

Powiązane:
uint8_t, uint16_t, uint32_t,



#top uint16_t


Definicja typu uint32_t znajduje się w pliku nagłówkowym stdint.h.
Definicja typu uint32_t jest następująca:
/* Unsigned.  */
typedef unsigned short int  uint16_t;

Powiązane:
uint8_t, uint16_t, uint32_t,



#top uint32_t


Definicja typu uint32_t znajduje się w pliku nagłówkowym stdint.h.
Definicja typu uint32_t jest następująca:
/* Unsigned.  */
#ifndef __uint32_t_defined
typedef unsigned int        uint32_t;
# define __uint32_t_defined
#endif

Powiązane:
uint8_t, uint16_t, uint32_t,



#top libsocknet Functions


#top sockWSASockInit


Deklaracja funkcji sockWSASockInit() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sockWSASockInit() jest następująca:
SELECT ALL
/**
 * @name   sockWSASockInit()
 * @desc   sockWSASockInit()
 * @param  void
 * @return int result
 */
int sockWSASockInit();

Powiązane:
sockWSASockInit(), sockWSASockClean(),

Opis:
Funkcja sockWSASockInit() jest wywoływana za każdym razem kiedy wywoływana jest funkcja sock_open(). Funkcja sockWSASockInit() dla platformy *nix nic nie robi i zawsze zwraca sukces. Funkcja sockWSASockInit() dla platformy win32 wywołuje funkcję WSAStartup(), która inicjalizuje używanie biblioteki Winsock DLL (Windows Sockets API) odpowiedzialnej za obsługę połączeń sieciowych. Zgodnie z dokumentacją (The application or DLL can only issue further Windows Sockets functions after successfully calling WSAStartup.) wywołanie tej funkcji jest niezbędne przed używaniem funkcji wykonujących opereacje sieciowe. W przypadku sukcesu zwracana jest wartość 0, w przeciwnym przypadku zwracana jest nie zerowa wartość określająca kod błędu znajdujący się na liście poniżej:
Error code Meaning
WSASYSNOTREADY The underlying network subsystem is not ready for network communication.
WSAVERNOTSUPPORTED The version of Windows Sockets support requested is not provided by this particular Windows Sockets implementation.
WSAEINPROGRESS A blocking Windows Sockets 1.1 operation is in progress.
WSAEPROCLIM A limit on the number of tasks supported by the Windows Sockets implementation has been reached.
WSAEFAULT The lpWSAData parameter is not a valid pointer.

Argumenty:
Funkcja nie przyjmuje żadnych argumentów.

Zwracana wartość:
int - W przypadku sukcesu zwracana jest wartość 0, w przeciwnym przypadku zwracana jest nie zerowa wartość.



#top sockWSASockClean


Deklaracja funkcji sockWSASockClean() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sockWSASockClean() jest następująca:
SELECT ALL
/**
 * @name   sockWSASockClean()
 * @desc   sockWSASockClean()
 * @param  void
 * @return int result
 */
int sockWSASockClean();

Powiązane:
sockWSASockInit(), sockWSASockClean(),

Opis:
Funkcja sockWSASockClean() jest wywoływana za każdym razem kiedy wywoływana jest funkcja sock_close(). Funkcja sockWSASockClean() dla platformy *nix nic nie robi i zawsze zwraca sukces. Funkcja sockWSASockInit() dla platformy win32 wywołuje funkcję WSACleanup(), która kończy używanie biblioteki Winsock 2 DLL (ws2_32.dll). Zgodnie z dokumentacją (An application must call the WSACleanup function for every successful time the WSAStartup function is called. This means, for example, that if an application calls WSAStartup three times, it must call WSACleanup three times. The first two calls to WSACleanup do nothing except decrement an internal counter; the final WSACleanup call for the task does all necessary resource deallocation for the task.) dla każdego wywołania WSAStartup() zakończonego sukcesem należy wywołać WSACleanup() po zakończeniu wykonywania operacji sieciowych (co jest wykonywane przy wywołaniach funkcji sock_open() i sock_close()). W przypadku sukcesu zwraca jest wartość 0, w przeciwnym przypadku zwracana jest wartość SOCKET_ERROR i kod błędu może zostać pobrany poprzez wywołanie funkcji WSAGetLastError():
Error code Meaning
WSANOTINITIALISED A successful WSAStartup call must occur before using this function.
WSAENETDOWN The network subsystem has failed.
WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.

Argumenty:
Funkcja nie przyjmuje żadnych argumentów.

Zwracana wartość:
int - W przypadku sukcesu zwracana jest wartość 0, w przeciwnym przypadku zwracana jest wartość SOCKET_ERROR.



#top sock_open


Deklaracja funkcji sock_open() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_open() jest następująca:
SELECT ALL
/**
 * @name   sock_open()
 * @desc   sock_open()
 * @param  const:sa_family_t safamily
 * @param  const:int         type
 * @param  const:int         protocol
 * @return int               SOCKET
 */
SOCKET sock_open(const sa_family_t safamily, const int type, const int protocol);

Powiązane:
sock_open(), sock_close(),

Opis:
Funkcja sock_open() tworzy deskryptor gniazda sieciowego. Funkcja sock_open() w pierwszej kolejności wywołuje funkcję sockWSASockInit(), która jak wspomniano powyżej wykonuje niezbędne operacje, aby było możliwe używanie utworzonego gniazda sieciowego. Wywołanie tej funkcji jest analogiczne do wywołania funkcji socket() (socket(), socket()) z tą drobną różnicą, że poprzedzone jest dodatkowymi operacjami niezbędnymi, aby było możliwe używanie utworzonego gniazda sieciowego. W przypadku sukcesu zwracany jest deskryptor gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).

Argumenty:
const sa_family_t safamily - określa rodzinę adresów tworzonego gniazda sieciowego. Poniżej wymienione są najczęściej używane typy rodziny adresów, inne możliwe typy zostały wymienione w AF Address families.
  • AF_LOCAL, AF_FILE, AF_UNIX -
  • AF_INET -
  • AF_INET6 -
  • PF_LOCAL, PF_FILE, PF_UNIX -
  • PF_INET -
  • PF_INET6 -
const int type - określa typ tworzonego gniazda sieciowego. Poniżej wymienione są najczęściej używane typy, inne możliwe typy zostały wymienione w enum __socket_type.
  • SOCK_STREAM -
  • SOCK_DGRAM -
  • SOCK_RAW -
const int protocol - określa protokoł tworzonego gniazda sieciowego. Poniżej wymienione są najczęściej używane typy protokołów, inne możliwe typy zostały wymienione w IP protocols. (podanie wartości "0" pozwala systemowi operacyjnego wybranie właściwego protokołu dla podanych argumentów rodziny adresów(safamily) i typu(type))
  • IPPROTO_IP -
  • IPPROTO_IPV6 -
  • IPPROTO_ICMP -
  • IPPROTO_ICMPV6 -
  • IPPROTO_TCP -
  • IPPROTO_UDP -
  • IPPROTO_RAW -

Zwracana wartość:
SOCKET - w przypadku sukcesu zwracany jest deskryptor gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).



#top sock_family


Deklaracja funkcji sock_family() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_family() jest następująca:
SELECT ALL
/**
 * @name   sock_family()
 * @desc   sock_family()
 * @param  const:SOCKET osock
 * @return int
 */
/*
NOTE because we need return also error code when not successful getting info about socket,
so we need return int (number with sign, sa_family_t have no sign)
/- POSIX.1g specifies this type name for the `sa_family' member.  -/
typedef unsigned short int sa_family_t;
*/
/*sa_family_t*/int sock_family(const SOCKET sockinfo);

Powiązane:
sock_family(), sock_optget(), sock_optset(),

Opis:
Funkcja sock_family() zwraca rodzinę adresów dla podanego deskryptora gniazda sieciowego. Wewnętrznie wywoływana jest funkcja getsockname() (getsockname(), getsockname()) która zwraca lokalny adres związany z połączenien, które obsługiwane jest przez podany deskryptor gniazda sieciowego w postaci struktury struct sockaddr, w której znajduje się element sa_family typu sa_family_t zawierający informacje o rodzinie adresów. Typ danych sa_family_t określający rodzinę adresów zdefiniowany jest jako liczba bez znaku wielkości 2 bajtów (unsigned short int), toteż funkcja zwraca liczbę ze znakiem wielkości 4 bajtów (int), dzięki czemu jest w stanie zwrócić wszyskie możliwe wartości rodziny adresów oraz w przypadku wystąpienia błędu zwrócić kod błędu w postaci ujemnej wartości.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego

Zwracana wartość:
int - W przypadku sukcesu zwracana jest rodzina adresów dla podanego deskryptora gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.



#top sock_optget


Deklaracja funkcji sock_optget() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_optget() jest następująca:
SELECT ALL
/**
 * @name   sock_optget()
 * @desc   sock_optget()
 * @param  const:SOCKET osock
 * @param  const:int    optname
 * @param  int         *optval
 * @return int          result
 */
int sock_optget(const SOCKET osock, const int optname, int *optval);

Powiązane:
sock_family(), sock_optget(), sock_optset(),

Opis:
Funkcja sock_optget() dla deskryptora gniazda sieciowego podanego w argumencie osock pobiera skonfigurowaną wartość dla właściwości podanej w argumencie optname. W zależności od właściwości podanej w argumencie optname funkcja wywołuje getsockopt() (getsockopt(), getsockopt()) lub fcntl() (fcntl(), fcntl()) w celu odczytania wartości. W przypadku sukcesu pobrana wartość ustawiana jest w argumencie *optval oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optname - rodzaj odczytywanej (pobieranej) właściwości ustawionej dla deskryptora gniazda sieciowego
  • SOPT_NONBLOCK - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) deskryptor gniazda sieciowego w stan blokujący wykonywane operacje
  • SOPT_BLOCK - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) deskryptor gniazda sieciowego w stan nie-blokujący wykonywane operacje
  • SOPT_SNDTIMEO - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) limit czasu na wysyłanie danych po którym zostanie zgłoszony błąd wykonywania operacji
  • SOPT_RCVTIMEO - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) limit czasu na odbieranie danych po którym zostanie zgłoszony błąd wykonywania operacji
  • SOPT_SNDBUF - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) maksymalną wielkość (w bajtach) bufora używanego przy operacji wysyłania danych
  • SOPT_RCVBUF - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) maksymalną wielkość (w bajtach) bufora używanego przy operacji odbierania danych
  • SOPT_SNDLOWAT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) minimalną ilość (w bajtach) danych znajdujących się w buforze przy operacji wysyłania danych powyżej której dane zostaną przekazane do niższej warstwy OSI (rozpocznie się wysyłanie danych)
  • SOPT_RCVLOWAT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) minimalną ilość (w bajtach) danych znajdujących się w buforze przy operacji odbierania danych powyżej której dane są dostępne dla wyższej warstwy OSI (możliwe jest odbieranie danych, kolejne operacje odbierania danych będą blokowane dopóki w buforze nie będzie ilości danych gotowych do odczytania okreslonych przez właściwość SO_RCVLOWAT)
  • SOPT_REUSEADDR - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację, czy jest możliwe ponowne przypisanie adresu przekazanego do funkcji getsockopt() (bind()), w praktyce oznacza to, że w przypadku nieprawidłowego zamknięcia procesu posiadającego przypisany deskryptor gniazda sieciowego do tego samego adresu ponowne przypisanie będzie zablokowane przez określony czas niezbędny, aby wszyskie pakiety związane z połączeniem przestały być przysyłane, ma to na celu uniknięcie w której do nowo utworzonego gniazda przypisanego do tego samego adresu dotrze "zagubiony" pakiet
  • SOPT_REUSEPORT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację, czy jest możliwe ponowne przypisanie portu przekazanego do funkcji getsockopt() (bind()), w praktyce oznacza to, że w przypadku nieprawidłowego zamknięcia procesu posiadającego przypisany deskryptor gniazda sieciowego do tego samego portu ponowne przypisanie będzie zablokowane przez określony czas niezbędny, aby wszyskie pakiety związane z połączeniem przestały być przysyłane, ma to na celu uniknięcie w której do nowo utworzonego gniazda przypisanego do tego samego portu dotrze "zagubiony" pakiet
  • SOPT_NODELAY - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację czy jest przy dla wysyłania danych jest używany algorytm Nagle-Algorithm
int *optval - wskaźnik do argumentu w którym zostanie umieszczona odczytana (pobrana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top sock_optset


Deklaracja funkcji sock_optset() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_optset() jest następująca:
SELECT ALL
/**
 * @name   sock_optset()
 * @desc   sock_optset()
 * @param  const:SOCKET osock
 * @param  const:int    optname
 * @param  const:int    optval
 * @return int          result
 */
int sock_optset(const SOCKET osock, const int optname, const int optval);

Powiązane:
sock_family(), sock_optget(), sock_optset(),

Opis:
Funkcja sock_optset() dla deskryptora gniazda sieciowego podanego w argumencie osock ustawia wartość dla właściwości podanej w argumencie optname. W zależności od właściwości podanej w argumencie optname funkcja wywołuje setsockopt() (setsockopt(), setsockopt()) lub fcntl() (fcntl(), fcntl()) w celu odczytania wartości. W przypadku sukcesu podana wartość argumencie optval została skonfigurowana oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optname - rodzaj zapisywanej (ustawianej) właściwości ustawionej dla deskryptora gniazda sieciowego
  • SOPT_NONBLOCK - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) deskryptor gniazda sieciowego w stan blokujący wykonywane operacje
  • SOPT_BLOCK - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) deskryptor gniazda sieciowego w stan nie-blokujący wykonywane operacje
  • SOPT_SNDTIMEO - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) limit czasu na wysyłanie danych po którym zostanie zgłoszony błąd wykonywania operacji
  • SOPT_RCVTIMEO - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) limit czasu na odbieranie danych po którym zostanie zgłoszony błąd wykonywania operacji
  • SOPT_SNDBUF - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) maksymalną wielkość (w bajtach) bufora używanego przy operacji wysyłania danych
  • SOPT_RCVBUF - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) maksymalną wielkość (w bajtach) bufora używanego przy operacji odbierania danych
  • SOPT_SNDLOWAT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) minimalną ilość (w bajtach) danych znajdujących się w buforze przy operacji wysyłania danych powyżej której dane zostaną przekazane do niższej warstwy OSI (rozpocznie się wysyłanie danych)
  • SOPT_RCVLOWAT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) minimalną ilość (w bajtach) danych znajdujących się w buforze przy operacji odbierania danych powyżej której dane są dostępne dla wyższej warstwy OSI (możliwe jest odbieranie danych, kolejne operacje odbierania danych będą blokowane dopóki w buforze nie będzie ilości danych gotowych do odczytania okreslonych przez właściwość SO_RCVLOWAT)
  • SOPT_REUSEADDR - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację, czy jest możliwe ponowne przypisanie adresu przekazanego do funkcji getsockopt() (bind()), w praktyce oznacza to, że w przypadku nieprawidłowego zamknięcia procesu posiadającego przypisany deskryptor gniazda sieciowego do tego samego adresu ponowne przypisanie będzie zablokowane przez określony czas niezbędny, aby wszyskie pakiety związane z połączeniem przestały być przysyłane, ma to na celu uniknięcie w której do nowo utworzonego gniazda przypisanego do tego samego adresu dotrze "zagubiony" pakiet
  • SOPT_REUSEPORT - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację, czy jest możliwe ponowne przypisanie portu przekazanego do funkcji getsockopt() (bind()), w praktyce oznacza to, że w przypadku nieprawidłowego zamknięcia procesu posiadającego przypisany deskryptor gniazda sieciowego do tego samego portu ponowne przypisanie będzie zablokowane przez określony czas niezbędny, aby wszyskie pakiety związane z połączeniem przestały być przysyłane, ma to na celu uniknięcie w której do nowo utworzonego gniazda przypisanego do tego samego portu dotrze "zagubiony" pakiet
  • SOPT_NODELAY - właściwość pozwalająca odczytać (pobrać) lub zapisać (ustawić) informację czy jest przy dla wysyłania danych jest używany algorytm Nagle-Algorithm
const int optval - argument w którym umieszczona jest zapisywana (ustawiana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top sock_bind


Deklaracja funkcji sock_bind() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_bind() jest następująca:
SELECT ALL
/**
 * @name   sock_bind()
 * @desc   sock_bind()
 * @param  const:SOCKET          lsock
 * @param  const:struct:sockaddr *listaddr
 * @return int                   result
 */
int sock_bind(const SOCKET lsock, const struct sockaddr *listaddr);

Powiązane:
sock_bind(), sock_listen(), sock_accept(), sock_conn(), sock_halfconn(),

Opis:
Funkcja sock_bind() przypisuje jednoznacznie identyfikujacą nazwę (ang. binding) czyli adres sieciowy podany w argumencie *listaddr do gniazda sieciowego podanego w argumencie lsock. W pierwszej kolejności sprawdzana jest rodzina adresów ustawiona w argumencie *listaddr, obsługiwane rodziny adresów to AF_UNIX, AF_INET i AF_INET6, w dla pozostałych wartości zwracany jest ujemny kod błedu informujący o nie obsługiwanej rodzinie adresów. W następnej kolejności następuje przypisanie adresu do gniazda poprzez wywołanie funkcji bind() (bind(), bind()). W przypadku sukcesu zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.

Argumenty:
const SOCKET lsock - deskryptor gniazda sieciowego
const struct sockaddr *listaddr - nazwa, czyli adres sieciowy, który ma zostać przypisany do deskryptora gniazda sieciowego

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top sock_listen


Deklaracja funkcji sock_listen() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_listen() jest następująca:
SELECT ALL
/**
 * @name   sock_listen()
 * @desc   sock_listen()
 * @param  const:SOCKET osock
 * @param  const:int    maxpending
 * @return int          result
 */
int sock_listen(const SOCKET lsock, const int maxpending);

Powiązane:
sock_bind(), sock_listen(), sock_accept(), sock_conn(), sock_halfconn(),

Opis:
Funkcja sock_listen() ustawia deskryptor gniazda sieciowego podanego w argumencie lsock w stan nasłuchiwania poprzez wywołanie funkcji listen() (listen()). Podana w argumencie maxpending wartość określa maksymalną wielkość kolejki połączeń odebranych oczekujących na obsłużenie (zaakceptowanie) poprzez wywołanie funkcji accept() (accept()), powyżej której, kolejne przychodzące połączenia będą odrzucane. Ustawienie deskryptora w stan nasłuchiwania jest stosowane dla deskryptora typu typu SOCK_STREAM lub SOCK_SEQPACKET aby w następnej kolejności możliwe było akceptowania (odbieranie) połączeń przychodzących. W przypadku sukcesu zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.

Argumenty:
const SOCKET lsock - deskryptor gniazda sieciowego
const int maxpending - maksymalna ilość odebranych połączeń oczekujących na obsłużenie (zaakceptowanie) poprzez wywołanie funkcji accept()

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top sock_accept


Deklaracja funkcji sock_accept() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_accept() jest następująca:
SELECT ALL
/**
 * @name   sock_accept()
 * @desc   sock_accept()
 * @param  const:SOCKET    lsock
 * @param  struct:sockaddr *peeraddr
 * @return SOCKET csock | int error
 */
SOCKET sock_accept(const SOCKET lsock, struct sockaddr *peeraddr);

Powiązane:
sock_bind(), sock_listen(), sock_accept(), sock_conn(), sock_halfconn(),

Opis:
Funkcja sock_accept() akceptuje (odbiera, pobiera pierwsze połączenie z kolejki połączeń oczekujących na obsłużenie) poprzez wywołanie funkcji accept() (accept(), accept()). Oczekiwania na połączenia przychodzące jest stosowane dla deskryptora typu typu SOCK_STREAM, SOCK_SEQPACKET lub SOCK_RDM. W pierwszej kolejności następuje pobranie rodziny adresów dla deskryptora przekazanego w argumencie lsock i w przypadku sukcesu ustawienie odpowiedniej wielkości dla adresu przekazanego w argumencie *peeraddr. W przypadku gdy w argumencie lsock zostanie przekazany deskryptor będący ustawiony w stan blokujący to funkcja blokuje program do czasu uzyskania nowego połączenia. W przypadku gdy w argumencie lsock zostanie przekazany deskryptor będący ustawiony w stan nie-blokujący to funkcja nie blokuje programu do czasu uzyskania nowego połączenia, tylko: a) w przypadku gdy w kolejce oczekuje połączenie na obsłużenie to zwracany jest nowo utworzony deskryptor gniazda sieciowego dla zaakceptowanego (odebranego) połączenia, b) zwracany jest kod błędu w postaci ujemnej wartości informujący o konieczności powtórzenia operacji lub informujący o innym błędzie. W przypadku sukcesu adres źródłowy połączenia ustawiana jest w argumencie *peeraddr oraz zwracany jest nowo utworzony deskryptor gniazda sieciowego dla zaakceptowanego (odebranego) połączenia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).
UWAGA przekazany wskaźnik do struktury w argumencie *peeraddr musi być odpowiedniej wielkości by pomieścić adres zaakceptowanego (odebranego) połączenia. Nie jest wykonywane żadne sprawdzanie wielkości dostępnej przestrzeni wskazywanej przez wskaźnik, wykonywane jest tylko pobranie rodziny adresów dla deskryptora przekazanego w argumencie lsock i w przypadku sukcesu ustawienie odpowiedniej wielkości dla adresu przekazanego w argumencie *peeraddr bez sprawdzania czy adres przekazany w tym argumencie jest odpowiedniej wielkości (gdyż nie ma możliwości na podstawie podanego wskaźnika do adresu w pamięci sprawdzenia wielkości dostępnego obszaru pamięci). Jeśli wskaźnik będzie wskazywał na przestrzeń mniejszą niż wymagana, może to spowodować nieprawidłowe działanie programu w wyniku nadpisania innych danych znajdujących się w tym samym miejscu co adres do przekazany we wskaźniku,
W przypadku braku informacji jakiej wielkości należy się spodziewać adresu zaakceptowanie (odebranego) połączenia wskazane jest użycie do tego celu struktury struct sockaddr_storage, która jest wystarczającej wielkości by pomieścić adresy sieciowe typu UNIX (struct sockaddr_un), protokołu IPv4 (struct sockaddr_in), protokołu IPv6 (struct sockaddr_in6), w praktyce nie ma takiej konieczności, jeśli do akceptowania (odbierania) połączeń został użyty deskryptor gniazda sieciowego dla rodziny adresów AF_UNIX należy w argumencie *peeraddr przekazać wskaźnik do struktury przechowujacej adresy UNIX struct sockaddr_un, natomiast jeśli do akceptowania (odbierania) połączeń został użyty deskryptor gniazda sieciowego dla rodziny adresów AF_INET lub AF_INET6 należy w argumencie *peeraddr przekazać odpowiednio wskaźnik do struktury struct sockaddr_in lub struct sockaddr_in6.

Argumenty:
const SOCKET lsock - deskryptor gniazda sieciowego
struct sockaddr *peeraddr - wskaźnik do struktury w której ustawiony (zapisany) zostanie adres źródłowy połączenia dla nowo zaakceptowanego (odebranego) połączenia

Zwracana wartość:
SOCKET - nowo utworzony deskryptor gniazda sieciowego dla zaakceptowanego (odebranego) połączenia



#top sock_conn


Deklaracja funkcji sock_conn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_conn() jest następująca:
SELECT ALL
/**
 * @name   sock_conn()
 * @param  const:SOCKET           osock
 * @param  const:struct:sockaddr *connaddr
 * @param  const:double           timeoconn
 * @return int
 */
int sock_conn(const SOCKET osock, const struct sockaddr *connaddr, const double timeoconn);

Powiązane:
sock_bind(), sock_listen(), sock_accept(), sock_conn(), sock_halfconn(),

Opis:
Funkcja sock_conn() nawiązuje (wysyła żądanie nawiązania) połączenia do adresu przekazanego w argumencie *connaddr ograniczonego czasem trwania przekazanego w argumencie timeoconn. W pierwszej kolejności sprawdzany jest limit czasu na połączenie przekazany w argumencie timeoconn, jeśli nie jest on większy od zera (jest mniejszy lub równy zeru) to zwracany jest ujemny kod błędu informujący o przekroczeniu czasu oczekiwania na połączenie (w czasie mniejszym lub równy zeru, nie jest możliwe nawiązanie połączenia z sukcesem). W następnej kolejności sprawdzana jest rodzina adresów ustawiona w argumencie *listaddr, obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości zwracany jest ujemny kod błedu informujący o nie obsługiwanej rodzinie adresów. Następnie deskryptor gniazda sieciowego podany w argumencie osock ustawiany jest w stan nie-blokujący po czym realizowany jest proces nawiązywania połączenia poprzez wywołanie funkcji connect() (connect(), connect()). Jeśli funkcja zwróci jako status nawiązywania połączenia ujemną wartość oraz kod błędu ustawiony w makrze errno będzie inny niż EINPROGRESS (lub inny niż WSAEWOULDBLOCK i WSAEINPROGRESS dla win32) to zwracany jest kod błędu w postaci ujemnej wartości. Ze względu na ustawienie deskryptora w stan nie-blokujący konieczne jest użycie funkcji sprawdzającej status deskryptora gniazda sieciowego np: select() (select(), select()), poll() (poll(), poll()), epoll() (epoll(), epoll()). Ze względu na przenośność (oraz fakt, że używany jest tylko jeden deskryptor) używana jest funkcja select(), która wykonuje sprawdzenie czy deskryptor gniazda sieciowego jest gotowy do odczytu (odbierania) lub zapisu (wysyłania) danych. Następnie jeśli funkcja zwróci informację, że co najmniej jeden deskryptor jest gotowy do wykonywania operacji odczytu lub zapisu to następuje sprawdzenie czy podczas nawiązywania połączenia (co jest istotne dla deskryptora ustawionego w stan nie-blokujący) czy nie wystąpił błąd poprzez odczyt informacji SO_ERROR przy użyciu funkcji getsockopt() (getsockopt() (getsockopt()). Jeśli funkcja zwróci wartość zero to połączenie uznawane jest za nawiązane z sukcesem i zwracana jest wartość dodatnia, w przeciwnym razie odczytany kod błędu ustawiany jest w makrze errno oraz zwracany w postaci ujemnej wartości.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeoconn - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top sock_halfconn


Deklaracja funkcji sock_halfconn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_halfconn() jest następująca:
SELECT ALL
/**
 * @name   sock_halfconn()
 * @param  const:SOCKET           osock
 * @param  const:struct:sockaddr *connaddr
 * @param  const:double           timeoconn
 * @return int
 */
int sock_halfconn(const SOCKET osock, const struct sockaddr *connaddr, const double timeoconn);

Powiązane:
sock_bind(), sock_listen(), sock_accept(), sock_conn(), sock_halfconn(),

Opis:
Funkcja sock_halfconn() podobnie jak wcześniejsza funkcja sock_conn() nawiązuje (wysyła żądanie nawiązania) połączenia do adresu przekazanego w argumencie *connaddr ograniczonego czasem trwania podanego w argumencie timeoconn. W odróżnieniu od funkcji sock_conn() przed nawiązaniem połączenia zmienia zachowanie deskryptora gniazda sieciowego podanego w argumencie osock przy zamykaniu. Przy normalnym zamykaniu połączenia wysyłany jest pakiet FIN do systemu docelowego zamykający połączenie na wysyłanie danych, na który system docelowy powinien odesłać pakiet ACK (lub ACK+FIN potwierdzający odebranie pakietu z pakietem zamykającym połączenie na odbieranie danych przez strone lokalnę a wysyłanie przez stronę zdalną), w odpowiedzi system lokalny powinien odesłać pakiet ACK potwierdzający odebranie pakietu (analogicznie jak występuje wymiana pakietów przy nawiązywaniu połączenia, z tą różnicą, że każda ze stron wysyła pakiet zamykający połączenie, kiedy zostały wysłane wszyskie dane, strona lokalna po wysłaniu żądania np: HTTP, strona zdalna po wysłaniu odpowiedzi na żądanie np: HTTP, pod warunkiem braku w nagłówka żądania Connection: keep-alive). Przy zamykaniu połączenia otwartego tą funkcją poprzez ustawioną właściwość SO_LINGER z czasem ustawionym na zero przy zamykaniu połączenia wszystkie dane znajdujące się w buforze do wysłana są porzucane a do systemu zdalnego wysyłany jest pakiet RST oznaczający dla systemu odbierającego połączenie błąd (TIME_WAIT state, What exactly does SO_LINGER do?). W ten sposób pośrednio przy braku uprawnień superużytkownika możliwe jest emulowanie nawiązywania nie pełnego połączenia. Oczywiście pełne połączenie jest nawiązywane, jednakże zaraz po nawiązaniu połączenia jest wysyłany pakiet RST, w wyniku czego system decelowy może zaakceptować przychodzące połączenie z błędem i zamknąć połączenie bez informowania o tym fakcie w logach.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeoconn - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top sock_send


Deklaracja funkcji sock_send() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_send() jest następująca:
SELECT ALL
/**
 * @name   sock_send()
 * @desc   sock_send()
 * @param  const:SOCKET osock
 * @param  const:char  *buffdata
 * @param  const:size_t buffsize
 * @param  const:double timeosock
 * @return int
 */
int sock_send(const SOCKET osock, const char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
sock_send(), sock_recv(), sock_onerecv(), sock_linerecv(),

Opis:
Funkcja sock_send() do systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock wysyła (zapisuje) dane przekazane w argumencie buffdata (ilość danych do wysłania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W pierwszej kolejności sprawdzany jest limit czasu na wysłanie danych przekazany w argumencie timeosock, jeśli nie jest on większy od zera (jest mniejszy lub równy zeru) to zwracany jest ujemny kod błędu informujący o przekroczeniu czasu oczekiwania na wysłanie danych (w czasie mniejszym lub równy zeru, nie jest możliwe wysłanie danych z sukcesem). Następnie w pętli powtarzanie jest wysyłanie danych aż wszystkie przekazane dane nie zostaną wysłane w podanym czasie. Przed wysłaniem danych wywoływana jest funkcja select() (select(), select()), która wykonuje sprawdzenie czy deskryptor gniazda sieciowego jest gotowy do zapisu (wysyłania) danych. Następnie jeśli funkcja zwróci informację, że co najmniej jeden deskryptor jest gotowy do wykonywania zapisu to realizowany jest właściwy proces wysyłania danych za pomocą funkcji send() (send(), send()). Powyższe kroki powtarzane są w pętli aż wszystkie przekazane dane zostaną wysłane w czasie krótszym niż podany. W przypadku gdy wszyskie przekazane dane zostały wysłane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (będzie zgodna z ilością podaną w argumencie buffsize), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const char *buffdata - wskaźnik do bufora z danymi do wysłania
const size_t buffsize - ilość danych do wysłania
const double timeosock - limit czasu na wysyłanie danych

Zwracana wartość:
int - wynik (status) wysyłania danych (wartość dodatnia oznacza ilość wysłanych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości wysłania danych)



#top sock_recv


Deklaracja funkcji sock_recv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_recv() jest następująca:
SELECT ALL
/**
 * @name   sock_recv()
 * @desc   sock_recv()
 * @param  const:SOCKET osock
 * @param  char        *buffdata
 * @param  const:size_t buffsize
 * @param  const:double timeosock
 * @return int
 */
int sock_recv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
sock_send(), sock_recv(), sock_onerecv(), sock_linerecv(),

Opis:
Funkcja sock_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize, dokładnie taka ilość danych musi zostać odebrana, aby funkcja zakończyła działanie z sukcesem lub mniejsza jeśli nie ma więcej danych do odebrania) ograniczonego czasem trwania podanego w argumencie timeosock. W pierwszej kolejności sprawdzany jest limit czasu na odbieranie danych przekazany w argumencie timeosock, jeśli nie jest on większy od zera (jest mniejszy lub równy zeru) to zwracany jest ujemny kod błędu informujący o przekroczeniu czasu oczekiwania na odbieranie danych (w czasie mniejszym lub równy zeru, nie jest możliwe odebranie danych z sukcesem). Następnie w pętli powtarzanie jest odbieranie danych aż określona argumentem buffsize ilość danych lub mniejsza jeśli nie ma więcej danych do odebrania nie zostanie odebrana w podanym czasie. Przed odbieraniem danych wywoływana jest funkcja select() (select(), select()), która wykonuje sprawdzenie czy deskryptor gniazda sieciowego jest gotowy do odczytu (odbierania) danych. Następnie jeśli funkcja zwróci informację, że co najmniej jeden deskryptor jest gotowy do wykonywania odczytu to realizowany jest właściwy proces odbierania danych za pomocą funkcji recv() (recv(), recv()). Powyższe kroki powtarzane są w pętli aż ilość danych określona argumentem buffsize lub mniejsza jeśli nie ma więcej danych do odebrania nie zostanie odebrana w czasie krótszym niż podany. W przypadku gdy dane o ilości określonej w argumencie buffsize lub mniejszej jeśli nie ma więcej danych do odebrania zostały odebrane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości odebranych danych (będzie zgodna z ilością podaną w argumencie buffsize lub mniejsza jeśli nie ma więcej danych do odebrania), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych, ale bez błedu podczas odbierania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (wartość dodatnia lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top sock_onerecv


Deklaracja funkcji sock_onerecv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_onerecv() jest następująca:
SELECT ALL
/**
 * @name   sock_onerecv()
 * @desc   sock_onerecv()
 * @param  const:SOCKET osock
 * @param  char        *buffdata
 * @param  const:size_t buffsize
 * @param  const:double timeosock
 * @return int
 */
int sock_onerecv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
sock_send(), sock_recv(), sock_onerecv(), sock_linerecv(),

Opis:
Funkcja sock_onerecv() podobnie jak funkcja sock_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytuje) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W odróżnieniu od funkcji sock_recv() nie odbiera wymaganej argumentem buffsize ilości danych tylko odbiera tyle odbiera tyle danych ile jest aktualnie czekających na odebranie. W przypadku gdy dane o dowolnej ilości lecz nie większej niż określonej w argumencie buffsize zostały odebrane w czasie mniejszym niż podany w argumencie timeosock to zwracana jest wartość dodatnia informująca o ilości odebranych danych, w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (wartość dodatnia lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top sock_linerecv


Deklaracja funkcji sock_linerecv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_linerecv() jest następująca:
SELECT ALL
/**
 * @name   sock_linerecv()
 * @desc   sock_linerecv()
 * @param  const:SOCKET osock
 * @param  char        *buffdata
 * @param  const:size_t buffsize
 * @param  const:double timeosock
 * @return int
 */
int sock_linerecv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
sock_send(), sock_recv(), sock_onerecv(), sock_linerecv(),

Opis:
Funkcja sock_linerecv() podobnie jak funkcja sock_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (maksymalna ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W odróżnieniu od funkcji sock_recv() nie odbiera wymaganej argumentem buffsize ilości danych tylko taką ilość danych, w której ostatni znak (bajt) jest znakiem nowej linii (0x0A) lub ilość danych określoną argumentem buffsize w przypadku gdy podano zbyt małej wielkości bufor aby móc pobrać niezbędną ilość danych wraz z ostatnim znakiem (bajtem) nowej linii (0x0A). W takim przypadku możliwe jest kontynuowanie odczytu danych aż do znaku (bajtu) nowej linii (0x0A) poprzez ponowne wywołanie tej funkcji. W przypadku gdy dane o ilości w której ostatni znak (bajt) jest znakiem nowej linii (0x0A) lecz nie większej niż określonej w argumencie buffsize zostały odebrane w czasie mniejszym niż podany w argumencie timeosock to zwracana jest wartość dodatnia informująca o ilości odebranych danych, w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (wartość dodatnia lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top sock_close


Deklaracja funkcji sock_close() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_close() jest następująca:
SELECT ALL
/**
 * @name   sock_close()
 * @desc   sock_close()
 * @param  const:SOCKET osock
 * @return int          result
 */
int sock_close(const SOCKET osock);

Powiązane:
sock_open(), sock_close(),

Opis:
Funkcja sock_close() zamyka (niszczy) deskryptor gniazda sieciowego podanego w argumencie osock. W pierwszej kolejności sprawdzane jest argument osock zawiera prawidłową wartość dla deskryptora gniazda sieciowego (nie jest wykonywane sprawdzenie, czy deskryptor jest prawidłowy), jeśli nie zawiera prawidłowej wartości zwracany jest ujemny kod błędu informujący, że przekazany argument to nie jest prawidłowy deskryptor gniazda sieciowego. Następnie funkcja zamyka deskryptor gniazda sieciowego poprzez wywołanie właściwej funkcji close() (close(), close()). Funkcja sock_close() wykonuje operację odwrotną do funkcji sock_open() i wywoływana jest (powinna być wywoływana) na samym końcu po wykonaniu wszystkich niezbędnych operacji (lub wywoływana po wystąpienia błędu, po którym nie jest możliwie dalsze wykonywanie operacji z użyciem deskryptora gniazda sieciowego). W przypadku sukcesu zwraca jest wartość dodatnia, w przeciwnym razie zwracany jest ujemny kod błędu informujący o przyczynie błędu.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego

Zwracana wartość:
int - wynik (status) zamykania deskryptora



#top tcp_open


Deklaracja funkcji tcp_open() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_open() jest następująca:
SELECT ALL
/**
 * @name   tcp_open()
 * @desc   tcp_open()
 * @param  const:sa_family_t safamily
 * @return SOCKET
 */
SOCKET tcp_open(const sa_family_t safamily);

Powiązane:
tcp_open(), tcp_close(),

Opis:
Funkcja tcp_open() podobnie jak funkcja sock_close() tworzy deskryptor gniazda sieciowego. W przypadku sukcesu zwracany jest deskryptor gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).
Funkcja tcp_open() wewnętrznie wywołuje funkcje sock_open(). Wywołanie funkcji tcp_open() jest równoważne do wywołania:
sock_open(safamily, SOCK_STREAM, IPPROTO_TCP);

Argumenty:
const sa_family_t safamily - określa rodzinę adresów tworzonego gniazda sieciowego. Poniżej wymienione są najczęściej używane typy rodziny adresów, inne możliwe typy zostały wymienione w AF Address families.
  • AF_LOCAL, AF_FILE, AF_UNIX -
  • AF_INET -
  • AF_INET6 -
  • PF_LOCAL, PF_FILE, PF_UNIX -
  • PF_INET -
  • PF_INET6 -

Zwracana wartość:
SOCKET - w przypadku sukcesu zwracany jest deskryptor gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).



#top tcp_sockoptget


Deklaracja funkcji tcp_sockoptget() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_sockoptget() jest następująca:
SELECT ALL
/**
 * @name   tcp_sockoptget()
 * @desc   tcp_sockoptget()
 * @param  const:SOCKET osock
 * @param  const:int    optname
 * @param  int         *optval
 * @return int          result
 */
int tcp_sockoptget(const SOCKET osock, const int optname, int *optval);

Powiązane:
tcp_sockoptget(), tcp_sockoptset(),

Opis:
Funkcja tcp_sockoptget() podobnie jak funkcja sock_optget() dla deskryptora gniazda sieciowego podanego w argumencie osock pobiera skonfigurowaną wartość dla właściwości podanej w argumencie optname. W przypadku sukcesu pobrana wartość ustawiana jest w argumencie *optval oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.
Funkcja tcp_sockoptget() wewnętrznie wywołuje funkcje sock_optget(). Wywołanie funkcji tcp_sockoptget() jest równoważne do wywołania:
sock_optget(osock, optname, optval);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optname - rodzaj odczytywanej (pobieranej) właściwości ustawionej dla deskryptora gniazda sieciowego (dostępne rodzaje odczytywanej (pobieranej) właściwości opisane zostały w funkcji sock_optget())
int *optval - wskaźnik do argumentu w którym zostanie umieszczona odczytana (pobrana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top tcp_sockoptset


Deklaracja funkcji tcp_sockoptset() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_sockoptset() jest następująca:
SELECT ALL
/**
 * @name   tcp_sockoptset()
 * @desc   tcp_sockoptset()
 * @param  const:SOCKET osock
 * @param  const:int    optname
 * @param  const:int    optval
 * @return int          result
 */
int tcp_sockoptset(const SOCKET osock, const int optname, const int optval);

Powiązane:
tcp_sockoptget(), tcp_sockoptset(),

Opis:
Funkcja sock_optset() podobnie jak funkcja sock_optset() dla deskryptora gniazda sieciowego podanego w argumencie osock ustawia wartość dla właściwości podanej w argumencie optname. W przypadku sukcesu podana wartość argumencie optval została skonfigurowana oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.
Funkcja tcp_sockoptset() wewnętrznie wywołuje funkcje sock_optset(). Wywołanie funkcji tcp_sockoptset() jest równoważne do wywołania:
sock_optset(osock, optname, optval);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optname - rodzaj zapisywanej (ustawianej) właściwości ustawionej dla deskryptora gniazda sieciowego (dostępne rodzaje zapisywanej (ustawianej) właściwości opisane zostały w funkcji sock_optset())
const int optval - argument w którym umieszczona jest zapisywana (ustawiana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top tcp_conn


Deklaracja funkcji tcp_conn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_conn() jest następująca:
SELECT ALL
/**
 * @name   tcp_conn()
 * @desc   tcp_conn()
 * @param  const:SOCKET     osock
 * @param  struct sockaddr *connaddr
 * @param  const double     timeosock
 * @return int              result
 */
int tcp_conn(const SOCKET osock, const struct sockaddr *connaddr, const double timeosock);

Powiązane:
tcp_conn(), tcp_blockconn(), tcp_resetokconn(), tcp_halfconn(),

Opis:
Funkcja tcp_conn() podobnie jak funkcja sock_conn() nawiązuje (wysyła żądanie nawiązania) połączenia do adresu przekazanego w argumencie *connaddr ograniczonego czasem trwania przekazanego w argumencie timeoconn. W przypadku nawiązania połączenia z sukcesem, zwracana jest wartość dodatnia, w przeciwnym razie odczytany kod błędu ustawiany jest w makrze errno oraz zwracany w postaci ujemnej wartości.
Funkcja tcp_conn() wewnętrznie wywołuje funkcje sock_conn(). Wywołanie funkcji tcp_sockoptset() jest równoważne do wywołania:
sock_conn(osock, connaddr, timeoconn);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeosock - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top tcp_halfconn


Deklaracja funkcji tcp_halfconn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_halfconn() jest następująca:
SELECT ALL
/**
 * @name   tcp_halfconn()
 * @desc   tcp_halfconn()
 * @param  const:SOCKET     osock
 * @param  struct sockaddr *connaddr
 * @param  const double     timeosock
 * @return int              result
 */
int tcp_halfconn(const SOCKET osock, const struct sockaddr *connaddr, const double timeosock);

Powiązane:
sock_conn(), tcp_blockconn(), tcp_resetokconn(), tcp_halfconn(),

Opis:
Funkcja tcp_halfconn() podobnie jak funkcja sock_halfconn() nawiązuje (wysyła żądanie nawiązania) połączenia do adresu przekazanego w argumencie *connaddr ograniczonego czasem trwania przekazanego w argumencie timeoconn. W przypadku nawiązania połączenia z sukcesem, zwracana jest wartość dodatnia, w przeciwnym razie odczytany kod błędu ustawiany jest w makrze errno oraz zwracany w postaci ujemnej wartości.
Funkcja tcp_halfconn() wewnętrznie wywołuje funkcje sock_halfconn(). Wywołanie funkcji tcp_halfconn() jest równoważne do wywołania:
sock_halfconn(osock, connaddr, timeoconn);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeosock - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top tcp_blockconn


Deklaracja funkcji tcp_blockconn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_blockconn() jest następująca:
SELECT ALL
/**
 * @name   tcp_blockconn()
 * @desc   tcp_blockconn()
 * @param  const:SOCKET     osock
 * @param  struct sockaddr *connaddr
 * @param  const double     timeosock
 * @return int              result
 */
int tcp_blockconn(const SOCKET osock, const struct sockaddr *connaddr, const double timeosock);

Powiązane:
sock_conn(), tcp_blockconn(), tcp_resetokconn(), tcp_halfconn(),

Opis:
Funkcja tcp_blockconn()
Funkcja tcp_blockconn() wewnętrznie wywołuje funkcje sock_conn(). Wywołanie funkcji tcp_blockconn() jest równoważne do wywołania:
tcp_sockoptset(osock, SOPT_BLOCK, 1);
sock_conn(osock, connaddr, timeoconn);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeosock - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top tcp_resetokconn


Deklaracja funkcji tcp_resetokconn() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_resetokconn() jest następująca:
SELECT ALL
/**
 * @name   tcp_resetokconn()
 * @desc   tcp_resetokconn()
 * @param  const:SOCKET     osock
 * @param  struct sockaddr *connaddr
 * @param  const double     timeosock
 * @return int              result
 */
int tcp_resetokconn(const SOCKET osock, const struct sockaddr *connaddr, const double timeosock);

Powiązane:
sock_conn(), tcp_blockconn(), tcp_resetokconn(), tcp_halfconn(),

Opis:
Funkcja tcp_resetokconn()
Funkcja tcp_resetokconn() wewnętrznie wywołuje funkcje sock_conn(). Wywołanie funkcji tcp_blockconn() jest równoważne do wywołania:
result=sock_conn(osock, connaddr, timeoconn);
if (result==RES_CONNRESET || result==RES_CONNREFUSED) { return RES_TRUE; }
return result;

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *connaddr - wskaźnik do struktury w zawierającej adres docelowy połączenia
const double timeosock - limit czasu nawiązywania połączenia

Zwracana wartość:
int - wynik (status) nawiązywania połączenia



#top tcp_send


Deklaracja funkcji tcp_send() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_send() jest następująca:
SELECT ALL
/**
 * @name   tcp_send()
 * @desc   tcp_send()
 * @param  const:SOCKET osock
 * @return int          result
 */
int tcp_send(const SOCKET osock, const char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
tcp_send(), tcp_recv(), tcp_onerecv(), tcp_linerecv(),

Opis:
Funkcja tcp_send() podobnie jak funkcja sock_send() do systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock wysyła (zapisuje) dane przekazane w argumencie buffdata (ilość danych do wysłania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W przypadku gdy wszyskie przekazane dane zostały wysłane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (będzie zgodna z ilością podaną w argumencie buffsize), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.
Funkcja tcp_send() wewnętrznie wywołuje funkcje sock_send(). Wywołanie funkcji tcp_send() jest równoważne do wywołania:
sock_send(osock, buffdata, buffsize, timeosock);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const char *buffdata - wskaźnik do bufora z danymi do wysłania
const size_t buffsize - ilość danych do wysłania
const double timeosock - limit czasu na wysyłanie danych

Zwracana wartość:
int - wynik (status) wysyłania danych (wartość dodatnia oznacza ilość wysłanych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości wysłania danych)



#top tcp_recv


Deklaracja funkcji tcp_recv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_recv() jest następująca:
SELECT ALL
/**
 * @name   tcp_recv()
 * @desc   tcp_recv()
 * @param  const:SOCKET osock
 * @return int          result
 */
int tcp_recv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
tcp_send(), tcp_recv(), tcp_onerecv(), tcp_linerecv(),

Opis:
Funkcja tcp_recv() podobnie jak funkcja sock_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize, dokładnie taka ilość danych musi zostać odebrana, aby funkcja zakończyła działanie z sukcesem lub mniejsza jeśli nie ma więcej danych do odebrania) ograniczonego czasem trwania podanego w argumencie timeosock. W przypadku gdy dane o ilości określonej w argumencie buffsize lub mniejszej jeśli nie ma więcej danych do odebrania zostały odebrane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości odebranych danych (będzie zgodna z ilością podaną w argumencie buffsize lub mniejsza jeśli nie ma więcej danych do odebrania), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych, ale bez błedu podczas odbierania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.
Funkcja tcp_recv() wewnętrznie wywołuje funkcje sock_recv(). Wywołanie funkcji tcp_recv() jest równoważne do wywołania:
sock_recv(osock, buffdata, buffsize, timeosock);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (wartość dodatnia lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top tcp_onerecv


Deklaracja funkcji tcp_onerecv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_onerecv() jest następująca:
SELECT ALL
/**
 * @name   tcp_onerecv()
 * @desc   tcp_onerecv()
 * @param  const:SOCKET osock
 * @return int          result
 */
int tcp_onerecv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
tcp_send(), tcp_recv(), tcp_onerecv(), tcp_linerecv(),

Opis:
Funkcja tcp_onerecv() podobnie jak funkcja sock_onerecv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytuje) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W przypadku gdy dane o dowolnej ilości lecz nie większej niż określonej w argumencie buffsize zostały odebrane w czasie mniejszym niż podany w argumencie timeosock to zwracana jest wartość dodatnia informująca o ilości odebranych danych, w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.
Funkcja tcp_onerecv() wewnętrznie wywołuje funkcje sock_onerecv(). Wywołanie funkcji tcp_onerecv() jest równoważne do wywołania:
sock_onerecv(osock, buffdata, buffsize, timeosock);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (wartość dodatnia lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top tcp_linerecv


Deklaracja funkcji tcp_linerecv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_linerecv() jest następująca:
SELECT ALL
/**
 * @name   tcp_linerecv()
 * @desc   tcp_linerecv()
 * @param  const:SOCKET osock
 * @return int          result
 */
int tcp_linerecv(const SOCKET osock, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
tcp_send(), tcp_recv(), tcp_onerecv(), tcp_linerecv(),

Opis:
Funkcja tcp_linerecv() podobnie jak funkcja sock_linerecv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (maksymalna ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W przypadku gdy dane o ilości w której ostatni znak (bajt) jest znakiem nowej linii (0x0A) lecz nie większej niż określonej w argumencie buffsize zostały odebrane w czasie mniejszym niż podany w argumencie timeosock to zwracana jest wartość dodatnia informująca o ilości odebranych danych, w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.
Funkcja tcp_linerecv() wewnętrznie wywołuje funkcje sock_linerecv(). Wywołanie funkcji tcp_linerecv() jest równoważne do wywołania:
sock_linerecv(osock, buffdata, buffsize, timeosock);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
char *buffdata - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top tcp_close


Deklaracja funkcji tcp_close() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji tcp_close() jest następująca:
SELECT ALL
/**
 * @name   tcp_close()
 * @desc   tcp_close()
 * @param  const:SOCKET osock
 * @return int          result
 */
int tcp_close(const SOCKET osock);

Powiązane:
tcp_open(), tcp_close(),

Opis:
Funkcja tcp_close() podobnie jak funkcja sock_close() zamyka (niszczy) deskryptor gniazda sieciowego podanego w argumencie osock. W przypadku sukcesu zwraca jest wartość dodatnia, w przeciwnym razie zwracany jest ujemny kod błędu informujący o przyczynie błędu.
Funkcja tcp_close() wewnętrznie wywołuje funkcje sock_close(). Wywołanie funkcji tcp_close() jest równoważne do wywołania:
sock_close(osock);

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego

Zwracana wartość:
int - wynik (status) zamykania deskryptora



#top udp_open


Deklaracja funkcji udp_open() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_open() jest następująca:
SELECT ALL
/**
 * @name   udp_open()
 * @desc   udp_open()
 * @param  const:sa_family_t sa_family
 * @return SOCKET
 */
SOCKET udp_open(const sa_family_t safamily);

Powiązane:
udp_open(), udp_close(),

Opis:
Funkcja udp_open() podobnie jak funkcja sock_close() tworzy deskryptor gniazda sieciowego. W przypadku sukcesu zwracany jest deskryptor gniazda sieciowego, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości (lub SOCKET_ERROR dla win32).
Funkcja tcp_open() wewnętrznie wywołuje funkcje sock_open(). Wywołanie funkcji tcp_open() jest równoważne do wywołania:
sock_open(safamily, SOCK_DGRAM, IPPROTO_UDP);

Argumenty:
const sa_family_t safamily - określa rodzinę adresów tworzonego gniazda sieciowego. Poniżej wymienione są najczęściej używane typy rodziny adresów, inne możliwe typy zostały wymienione w AF Address families.
  • AF_LOCAL, AF_FILE, AF_UNIX -
  • AF_INET -
  • AF_INET6 -
  • PF_LOCAL, PF_FILE, PF_UNIX -
  • PF_INET -
  • PF_INET6 -

Zwracana wartość:
SOCKET - deskryptor gniazda sieciowego



#top udp_sockoptget


Deklaracja funkcji udp_sockoptget() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_sockoptget() jest następująca:
SELECT ALL
/**
 * @name   udp_sockoptget()
 * @desc   udp_sockoptget()
 * @param  const:SOCKET osock
 * @param  const:int    optsw
 * @param  int         *optval
 * @return int          result
 */
int udp_sockoptget(const SOCKET osock, const int optsw, int *optval);

Powiązane:
udp_sockoptget(), udp_sockoptset(),

Opis:
Funkcja udp_sockoptget() podobnie jak funkcja sock_optget() dla deskryptora gniazda sieciowego podanego w argumencie osock pobiera skonfigurowaną wartość dla właściwości podanej w argumencie optname. W przypadku sukcesu pobrana wartość ustawiana jest w argumencie *optval oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.
Funkcja udp_sockoptget() wewnętrznie wywołuje funkcje sock_optget(). Wywołanie funkcji udp_sockoptget() jest równoważne do wywołania:
sock_optget(osock, optname, optval);


Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optsw - rodzaj odczytywanej (pobieranej) właściwości ustawionej dla deskryptora gniazda sieciowego (dostępne rodzaje odczytywanej (pobieranej) właściwości opisane zostały w funkcji sock_optget())
int *optval - wskaźnik do argumentu w którym zostanie umieszczona odczytana (pobrana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top udp_sockoptset


Deklaracja funkcji udp_sockoptset() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_sockoptset() jest następująca:
SELECT ALL
/**
 * @name   udp_sockoptset()
 * @desc   udp_sockoptset()
 * @param  const:SOCKET osock
 * @param  const:int    optsw
 * @param  const:int    optval
 * @return int          result
 */
int udp_sockoptset(const SOCKET osock, const int optsw, const int optval);

Powiązane:
udp_sockoptget(), udp_sockoptset(),

Opis:
Funkcja udp_sockoptset() podobnie jak funkcja sock_optset() dla deskryptora gniazda sieciowego podanego w argumencie osock ustawia wartość dla właściwości podanej w argumencie optname. W przypadku sukcesu podana wartość argumencie optval została skonfigurowana oraz zwracana jest wartość dodatnia, w przeciwnym przypadku zwracany jest kod błędu w postaci ujemnej wartości.
Funkcja udp_sockoptset() wewnętrznie wywołuje funkcje sock_optset(). Wywołanie funkcji udp_sockoptset() jest równoważne do wywołania:
sock_optset(osock, optname, optval);


Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const int optsw - rodzaj zapisywanej (ustawianej) właściwości ustawionej dla deskryptora gniazda sieciowego (dostępne rodzaje zapisywanej (ustawianej) właściwości opisane zostały w funkcji sock_optset())
const int optval - argument w którym umieszczona jest zapisywana (ustawiana) wartość

Zwracana wartość:
int - wynik (status) wykonanej operacji



#top udp_send


Deklaracja funkcji udp_send() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_send() jest następująca:
SELECT ALL
/**
 * @name   udp_send()
 * @desc   udp_send()
 * @param  const:SOCKET           osock
 * @param  const:struct:sockaddr *sendaddr
 * @param  const:char            *buffdata
 * @param  const:size_t           buffsize
 * @param  const:double           timeosock
 * @return int                    result
 */
int udp_send(const SOCKET osock, const struct sockaddr *sendaddr, const char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
udp_send(), udp_recv(), udp_linerecv(),

Opis:
Funkcja udp_send() do systemu zdalnego o adresie przekazanego w argumencie *sendaddr dla deskryptora przekazanego w argumencie osock wysyła (zapisuje) dane przekazane w argumencie buffdata (ilość danych do wysłania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W pierwszej kolejności sprawdzany jest limit czasu na wysłanie danych przekazany w argumencie timeosock, jeśli nie jest on większy od zera (jest mniejszy lub równy zeru) to zwracany jest ujemny kod błędu informujący o przekroczeniu czasu oczekiwania na wysłanie danych (w czasie mniejszym lub równy zeru, nie jest możliwe wysłanie danych z sukcesem). W następnej kolejności sprawdzana jest rodzina adresów ustawiona w argumencie *sendaddr, obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości zwracany jest ujemny kod błedu informujący o nie obsługiwanej rodzinie adresów. Następnie realizowane jest wysyłanie danych. Przed wysłaniem danych wywoływana jest funkcja select() (select(), select()), która wykonuje sprawdzenie czy deskryptor gniazda sieciowego jest gotowy do zapisu (wysyłania) danych. Następnie jeśli funkcja zwróci informację, że co najmniej jeden deskryptor jest gotowy do wykonywania zapisu to realizowany jest właściwy proces wysyłania danych za pomocą funkcji sendto() (sendto(), sendto()). W przypadku gdy dane zostały wysłane to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (będzie zgodna z ilością podaną w argumencie buffsize), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
const struct sockaddr *sendaddr - wskaźnik do struktury w zawierającej adres docelowy dla wysyłania danych
const char *buffdata - wskaźnik do bufora z danymi do wysłania
const size_t buffsize - ilość danych do wysłania
const double timeosock - limit czasu na wysyłanie danych

Zwracana wartość:
int - wynik (status) wysyłania danych (dodatnia wartość oznacza ilość wysłanych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości wysłania danych)



#top udp_recv


Deklaracja funkcji udp_recv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_recv() jest następująca:
SELECT ALL
/**
 * @name   udp_recv()
 * @desc   udp_recv()
 * @param  const:SOCKET     osock
 * @param  struct:sockaddr *recvaddr
 * @param  char            *buffdata
 * @param  const:size_t     buffsize
 * @param  const:double     timeosock
 * @return int              result
 */
int udp_recv(const SOCKET osock, struct sockaddr *recvaddr, char *buffdata, const size_t buffsize, const double timeosock);

Powiązane:
udp_send(), udp_recv(), udp_linerecv(),

Opis:
Funkcja udp_recv() od systemu zdalnego o adresie odebranym w argumencie *recvaddr dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W pierwszej kolejności sprawdzany jest limit czasu na wysłanie danych przekazany w argumencie timeosock, jeśli nie jest on większy od zera (jest mniejszy lub równy zeru) to zwracany jest ujemny kod błędu informujący o przekroczeniu czasu oczekiwania na odbieranie danych (w czasie mniejszym lub równy zeru, nie jest możliwe odbieranie danych z sukcesem). W następnej kolejności sprawdzana jest rodzina adresów ustawiona w argumencie *recvaddr, obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości zwracany jest ujemny kod błedu informujący o nie obsługiwanej rodzinie adresów. Następnie realizowane jest odbieranie danych. Przed odbieraniem danych wywoływana jest funkcja select() (select(), select()), która wykonuje sprawdzenie czy deskryptor gniazda sieciowego jest gotowy do odczytu (odbierania) danych. Następnie jeśli funkcja zwróci informację, że co najmniej jeden deskryptor jest gotowy do wykonywania odczytu to realizowany jest właściwy proces odbierania danych za pomocą funkcji recvfrom() (recvfrom(), recvfrom()). W przypadku gdy dane zostały odebrane to zwracana jest wartość dodatnia informująca o ilości odebranych danych (będzie nie więszka niż ilość podana w argumencie buffsize), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych, ale bez błedu podczas odbierania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.
UWAGA przekazany wskaźnik do struktury w argumencie *recvaddr musi być odpowiedniej wielkości by pomieścić adres odebranego adresu systemu zdalnego. Nie jest wykonywane żadne sprawdzanie wielkości dostępnej przestrzeni wskazywanej przez wskaźnik, wykonywane jest tylko pobranie rodziny adresów dla deskryptora przekazanego w argumencie lsock i w przypadku sukcesu ustawienie odpowiedniej wielkości dla adresu przekazanego w argumencie *recvaddr bez sprawdzania czy adres przekazany w tym argumencie jest odpowiedniej wielkości (gdyż nie ma możliwości na podstawie podanego wskaźnika do adresu w pamięci sprawdzenia wielkości dostępnego obszaru pamięci). Jeśli wskaźnik będzie wskazywał na przestrzeń mniejszą niż wymagana, może to spowodować nieprawidłowe działanie programu w wyniku nadpisania innych danych znajdujących się w tym samym miejscu co adres do przekazany we wskaźniku,
W przypadku braku informacji jakiej wielkości należy się spodziewać adresu zaakceptowanie (odebranego) połączenia wskazane jest użycie do tego celu struktury struct sockaddr_storage, która jest wystarczającej wielkości by pomieścić adresy sieciowe typu UNIX (struct sockaddr_un), protokołu IPv4 (struct sockaddr_in), protokołu IPv6 (struct sockaddr_in6), w praktyce nie ma takiej konieczności, jeśli do wysyłania i odbierania danych został użyty deskryptor gniazda sieciowego dla rodziny adresów AF_INET lub AF_INET6 należy w argumencie *recvaddr przekazać odpowiednio wskaźnik do struktury struct sockaddr_in lub struct sockaddr_in6.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
struct sockaddr *recvaddr - wskaźnik do struktury w której zostanie umieszczony adres docelowy dla odebranych danych
char *buffdata - wskaźnik do bufora z danymi do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych

Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top udp_linerecv


Deklaracja funkcji udp_linerecv() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_linerecv() jest następująca:
SELECT ALL
/**
 * @name   udp_linerecv()
 * @desc   udp_linerecv()
 * @param  const:SOCKET     osock
 * @param  struct:sockaddr *recvaddr
 * @param  char            *buffdata
 * @param  const:size_t     buffsize
 * @param  const:double     timeosock
 * @param  size            *linesize
 * @return int              result
 */
int udp_linerecv(const SOCKET osock, struct sockaddr *recvaddr, char *buffdata, const size_t buffsize, const double timeosock, size_t *linesize);

Powiązane:
udp_send(), udp_recv(), udp_linerecv(),

Opis:
Funkcja udp_linerecv() podobnie jak funkcja udp_recv() od systemu zdalnego o adresie odebranym w argumencie *recvaddr dla deskryptora przekazanego w argumencie osock odbierane (odczytywane) dane umieszcza w argumencie buffdata (ilość danych do odebrania podana jest w argumencie buffsize) ograniczonego czasem trwania podanego w argumencie timeosock. W przypadku odebrania danych z sukcesem w argumencie buffdata sprawdzana jest obecność znaku 0x0A. W przypadku gdy znak 0x0A został znaleziony w argumencie buffdata oraz gdy w argumencie linesize został przekazany wskaźnik (nie jest NULL) to w tym argumencie umieszczana jest wartość wskazująca na pozycję (offset) znaku 0x0A względem początku adresu argumentu buffdata.

Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego
struct sockaddr *recvaddr - wskaźnik do struktury w której zostanie umieszczony adres docelowy dla odebranych danych
char *buffdata - wskaźnik do bufora z danymi do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych
size_t *linesize - w przypadku obecności znaku 0x0A we wskaźniku do bufora z danymi do odebrania pozycja (offset) znaku 0x0A względem początku adresu wskaźnika do bufora

Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość lub zero oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych)



#top udp_close


Deklaracja funkcji udp_close() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji udp_close() jest następująca:
SELECT ALL
/**
 * @name   udp_close()
 * @desc   udp_close()
 * @param  const:SOCKET osock
 * @return int          result
 */
int udp_close(const SOCKET osock);

Powiązane:
udp_open(), udp_close(),

Opis:
Funkcja udp_close() podobnie jak funkcja sock_close() zamyka (niszczy) deskryptor gniazda sieciowego podanego w argumencie osock. W przypadku sukcesu zwraca jest wartość dodatnia, w przeciwnym razie zwracany jest ujemny kod błędu informujący o przyczynie błędu.
Funkcja tcp_close() wewnętrznie wywołuje funkcje sock_close(). Wywołanie funkcji tcp_close() jest równoważne do wywołania:
sock_close(osock);


Argumenty:
const SOCKET osock - deskryptor gniazda sieciowego

Zwracana wartość:
int - wynik (status) zamykania deskryptora



#top create_sockaddr


Deklaracja funkcji create_sockaddr() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji create_sockaddr() jest następująca:
SELECT ALL
/**
 * @name   create_sockaddr()
 * @desc   create_sockaddr()
 * @param  const:sa_family_t safamily
 * @param  const:char       *ipaddr
 * @param  const:char       *ipport
 * @param  struct:sockaddr  *inetXaddr
 * @return int               result
 */
struct sockaddr *create_sockaddr(const sa_family_t safamily, const char *ipaddr, const char *ipport, struct sockaddr *inetXaddr);

Powiązane:
create_sockaddr(), create_sockaddrin(), create_sockaddr6in(), create_sockaddrun(),

Opis:
Funkcja create_sockaddr() dla podanych argumentów safamily, ipaddr, ipport tworzy adres (ustawia atrybuty). W zależności od wartości rodziny adresów przekazanego w argumencie safamily ustawiane są odpowiednie atrybuty struktury (dla rodziny adresów AF_UNIX ustawiane są atrybuty sun_family, sun_path struktury struct sockaddr_un, dla rodziny adresów AF_INET ustawiane są atrybuty sin_family, sin_addr, sin_port struktury struct sockaddr_in, dla rodziny adresów AF_INET6 ustawiane są atrybuty sin6_family, sin6_addr, sin6_port struktury struct sockaddr_in6). Obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości zwracany jest wskaźnik NULL informujący o nie obsługiwanej rodzinie adresów. Następnie zawartość struktury jest kopiowana do wskaźnika przekazanego w argumencie inetXaddr oraz wskaźnik zwracany do przekazanej struktury.
UWAGA przekazany wskaźnik do struktury w argumencie *inetXaddr musi być odpowiedniej wielkości by pomieścić adres. Nie jest wykonywane żadne sprawdzanie wielkości dostępnej przestrzeni wskazywanej przez wskaźnik, wykonywane jest tylko spradzenie rodziny adresów przekazanej w argumencie safamily bez sprawdzania czy adres przekazany w argumencie inetXaddr jest odpowiedniej wielkości (gdyż nie ma możliwości na podstawie podanego wskaźnika do adresu w pamięci sprawdzenia wielkości dostępnego obszaru pamięci). Jeśli wskaźnik będzie wskazywał na przestrzeń mniejszą niż wymagana, może to spowodować nieprawidłowe działanie programu w wyniku nadpisania innych danych znajdujących się w tym samym miejscu co adres do przekazany we wskaźniku,

Argumenty:
const sa_family_t safamily - rodzina adresów
const char *ipaddr - wskaźnik do bufora zawierającego adres IP w postaci czytelnego łańcucha znaków
const char *ipport - wskaźnik do bufora zawierającego numer portu w postaci łańcucha znaków
struct sockaddr *inetXaddr - wskaźnik do struktury w której zostanie umieszczony utworzony adres

Zwracana wartość:
struct sockaddr * - wskaźnik do przekazanej struktury lub NULL w przypadku nie obsługiwanej rodziny adresów



#top create_sockaddrin


Deklaracja funkcji create_sockaddrin() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji create_sockaddrin() jest następująca:
SELECT ALL
/**
 * @name   create_sockaddrin()
 * @desc   create_sockaddrin()
 * @param  const:sa_family_t safamily
 * @param  const:char       *ipaddr
 * @param  const:char       *ipport
 * @return int               result
 */
struct sockaddr_in create_sockaddrin(const sa_family_t safamily, const char *ipaddr, const char *ipport);

Powiązane:
create_sockaddr(), create_sockaddrin(), create_sockaddr6in(), create_sockaddrun(),

Opis:
Funkcja create_sockaddrin() dla podanych argumentów safamily, ipaddr, ipport tworzy adres (ustawia atrybuty). Bez względu na wartość rodziny adresów przekazaną w argumencie safamily ustawiane są odpowiednie atrybuty struktury (ustawiane są atrybuty sin_family, sin_addr, sin_port dla struktury struct sockaddr_in). Następnie struktura ustawionymi atrybutami jest zwracana.

Argumenty:
const sa_family_t safamily - rodzina adresów
const char *ipaddr - wskaźnik do bufora zawierającego adres IP w postaci czytelnego łańcucha znaków
const char *ipport - wskaźnik do bufora zawierającego numer portu w postaci łańcucha znaków

Zwracana wartość:
struct sockaddr_in - struktura z ustawionymi atrybutami



#top create_sockaddr6in


Deklaracja funkcji create_sockaddr6in() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji create_sockaddr6in() jest następująca:
SELECT ALL
/**
 * @name   create_sockaddr6in()
 * @desc   create_sockaddr6in()
 * @param  const:sa_family_t safamily
 * @param  const:char       *ipaddr
 * @param  const:char       *ipport
 * @return int               result
 */
struct sockaddr_in6 create_sockaddr6in(const sa_family_t safamily, const char *ipaddr, const char *ipport);

Powiązane:
create_sockaddr(), create_sockaddrin(), create_sockaddr6in(), create_sockaddrun(),

Opis:
Funkcja create_sockaddr6in() dla podanych argumentów safamily, ipaddr, ipport tworzy adres (ustawia atrybuty). Bez względu na wartość rodziny adresów przekazaną w argumencie safamily ustawiane są odpowiednie atrybuty struktury (ustawiane są atrybuty sin6_family, sin6_addr, sin6_port struktury struct sockaddr_in6). Następnie struktura ustawionymi atrybutami jest zwracana.

Argumenty:
const sa_family_t safamily - rodzina adresów
const char *ipaddr - wskaźnik do bufora zawierającego adres IP w postaci czytelnego łańcucha znaków
const char *ipport - wskaźnik do bufora zawierającego numer portu w postaci łańcucha znaków

Zwracana wartość:
struct sockaddr_in6 - struktura z ustawionymi atrybutami



#top create_sockaddrun


Deklaracja funkcji create_sockaddrun() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji create_sockaddrun() jest następująca:
SELECT ALL
/**
 * @name   create_sockaddrun()
 * @desc   create_sockaddrun()
 * @param  const:sa_family_t safamily
 * @param  const:char       *pathsock
 * @return struct sockaddr_un
 */
struct sockaddr_un create_sockaddrun(const sa_family_t safamily, const char *pathsock);

Powiązane:
create_sockaddr(), create_sockaddrin(), create_sockaddr6in(), create_sockaddrun(),

Opis:
Funkcja create_sockaddrun() dla podanych argumentów safamily, sun_path tworzy adres (ustawia atrybuty). Bez względu na wartość rodziny adresów przekazaną w argumencie safamily ustawiane są odpowiednie atrybuty struktury (ustawiane są atrybuty sun_family, sun_path struktury struct sockaddr_un). Następnie struktura ustawionymi atrybutami jest zwracana.

Argumenty:
const sa_family_t safamily - rodzina adresów
const char *pathsock - wskaźnik do bufora zawierającego ścieżkę do gniazda sieciowego

Zwracana wartość:
struct sockaddr_un - struktura z ustawionymi atrybutami



#top addr_info


Deklaracja funkcji addr_info() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji addr_info() jest następująca:
SELECT ALL
/**
 * @name   addr_info()
 * @desc   addr_info()
 * @param  const:struct:sockaddr *infoaddr
 * @param  char                  *buffinfo
 * @param  const:size_t           buffsize
 * @return char *
 */
char *addr_info(const struct sockaddr *infoaddr, char *buffinfo, const size_t buffsize);

Powiązane:
addr_info(), sock_localinfo(), sock_peerinfo(),

Opis:
Funkcja addr_info() dla podanej wartości w argumencie infoaddr zwraca adres w czytelnej postaci tekstowej. Obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości zwracany jest wskaźnik NULL informujący o nie obsługiwanej rodzinie adresów. Dla rodziny adresów AF_UNIX zwracana jest ścieźka do gniazda sieciowego, natomiast dla rodziny adresów AF_INET oraz AF_INET6 zwracana jest informacja w postaci adresu IP oraz portu rozdzielonego znakiem dwukropka (dla rodziny AF_INET) lub znakiem kropki (dla rodziny AF_INET6) gdyż rodzina adresów AF_INET6 poszczególne fragmenty adresu są rodzielone znakiem dwukropka.

Argumenty:
const struct sockaddr *infoaddr - wskaźnik do adresu sieciowego
char *buffinfo - wskaźnik do łańcucha znaków w którym zostanie umieszczony adres w postaci tekstowej
const size_t buffsize - rozmiar wskaźnika do łańcucha znaków

Zwracana wartość:
char * - wskaźnik do przekazanego łańcucha znaków



#top sock_localinfo


Deklaracja funkcji sock_localinfo() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_localinfo() jest następująca:
SELECT ALL
/**
 * @name   sock_localinfo()
 * @desc   sock_localinfo()
 * @param  const:SOCKET sockinfo
 * @param  char        *buffinfo
 * @param  const:size_t buffsize
 * @return char *
 */
char *sock_localinfo(const SOCKET sockinfo, char *buffinfo, const size_t buffsize);

Powiązane:
addr_info(), sock_localinfo(), sock_peerinfo(),

Opis:
Funkcja sock_localinfo() dla gniazda sieciowego podanego w argumencie sockinfo zwraca lokalny adres połączenia w czytelnej postaci tekstowej. Obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości oraz w przypadku wystąpienia błędu przy pobieraniu informacji o adresie lokalnym zwracany jest wskaźnik NULL informujący o nie obsługiwanej rodzinie adresów lub o błędzie pobierania informacji o adresie lokalnym. Funkcja po pobraniu informacji o lokalnym adresie wywołuje wewnętrznie funkcję addr_info() zwracającą informację o lokalnym adresie w czytelnej postaci tekstowej.

Argumenty:
const SOCKET sockinfo - deskryptor gniazda sieciowego
char *buffinfo - wskaźnik do łańcucha znaków w którym zostanie umieszczony adres w postaci tekstowej
const size_t buffsize - rozmiar wskaźnika do łańcucha znaków

Zwracana wartość:
char * - wskaźnik do przekazanego łańcucha znaków



#top sock_peerinfo


Deklaracja funkcji sock_peerinfo() znajduje się w pliku nagłówkowym libnet/libsocknet.h.
Deklaracja funkcji sock_peerinfo() jest następująca:
SELECT ALL
/**
 * @name   sock_peerinfo()
 * @desc   sock_peerinfo()
 * @param  const:SOCKET sockinfo
 * @param  char        *buffinfo
 * @param  const:size_t buffsize
 * @return char *
 */
char *sock_peerinfo(const SOCKET sockinfo, char *buffinfo, const size_t buffsize);

Powiązane:
addr_info(), sock_localinfo(), sock_peerinfo(),

Opis:
Funkcja sock_peerinfo() dla gniazda sieciowego podanego w argumencie sockinfo zwraca zdalny adres połączenia w czytelnej postaci tekstowej. Obsługiwane przez funkcję rodziny adresów to AF_UNIX, AF_INET i AF_INET6, dla pozostałych wartości oraz w przypadku wystąpienia błędu przy pobieraniu informacji o adresie zdalnym zwracany jest wskaźnik NULL informujący o nie obsługiwanej rodzinie adresów lub o błędzie pobierania informacji o adresie zdalnym. Funkcja po pobraniu informacji o zdalnym adresie wywołuje wewnętrznie funkcję addr_info() zwracającą informację o zdalnym adresie w czytelnej postaci tekstowej.

Argumenty:
const SOCKET sockinfo - deskryptor gniazda sieciowego
char *buffinfo - wskaźnik do łańcucha znaków w którym zostanie umieszczony adres w postaci tekstowej
const size_t buffsize - rozmiar wskaźnika do łańcucha znaków

Zwracana wartość:
char * - wskaźnik do przekazanego łańcucha znaków





























Zmodyfikowany ostatnio: 2019/07/23 19:32:34 (5 lat temu), textsize: 150 kB, htmlsize: 223 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników