CONTENT
- CHANGES
Szukaj
#top libsocknet¶
- libsocknet
- Predefined Constants
- __SOCKADDR_COMMON_SIZE
- _SS_PADSIZE
- _SS_SIZE
- AF Address families
- PF Protocol families
- ULONG_MAX
- Datatypes / MACROS
- enum __socket_type
- __ss_aligntype
- __SOCKADDR_COMMON
- errno
- in_addr_t
- in_port_t
- IP protocols
- sa_family_t
- size_t
- SOCKET
- struct in_addr
- struct in6_addr
- struct sockaddr
- struct sockaddr_in
- struct sockaddr_in6
- struct sockaddr_storage
- struct sockaddr_un
- uint8_t
- uint16_t
- uint32_t
- libsocknet Functions
- sockWSASockInit
- sockWSASockClean
- sock_open
- sock_family
- sock_optget
- sock_optset
- sock_bind
- sock_listen
- sock_accept
- sock_conn
- sock_halfconn
- sock_send
- sock_recv
- sock_onerecv
- sock_linerecv
- sock_close
- tcp_open
- tcp_sockoptget
- tcp_sockoptset
- tcp_conn
- tcp_halfconn
- tcp_blockconn
- tcp_resetokconn
- tcp_send
- tcp_recv
- tcp_onerecv
- tcp_linerecv
- tcp_close
- udp_open
- udp_sockoptget
- udp_sockoptset
- udp_send
- udp_recv
- udp_linerecv
- udp_close
- create_sockaddr
- create_sockaddrin
- create_sockaddr6in
- create_sockaddrun
- addr_info
- sock_localinfo
- sock_peerinfo
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,
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 -
- SOCK_STREAM -
- SOCK_DGRAM -
- SOCK_RAW -
- 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
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
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
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 *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,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:
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
Funkcja tcp_sockoptget() wewnętrznie wywołuje funkcje sock_optget(). Wywołanie funkcji tcp_sockoptget() jest równoważne do wywołania:
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
Funkcja tcp_sockoptset() wewnętrznie wywołuje funkcje sock_optset(). Wywołanie funkcji tcp_sockoptset() jest równoważne do wywołania:
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
Funkcja tcp_conn() wewnętrznie wywołuje funkcje sock_conn(). Wywołanie funkcji tcp_sockoptset() jest równoważne do wywołania:
*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
Funkcja tcp_halfconn() wewnętrznie wywołuje funkcje sock_halfconn(). Wywołanie funkcji tcp_halfconn() jest równoważne do wywołania:
*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:
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:
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
Funkcja tcp_send() wewnętrznie wywołuje funkcje sock_send(). Wywołanie funkcji tcp_send() jest równoważne do wywołania:
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
Funkcja tcp_recv() wewnętrznie wywołuje funkcje sock_recv(). Wywołanie funkcji tcp_recv() jest równoważne do wywołania:
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
Funkcja tcp_onerecv() wewnętrznie wywołuje funkcje sock_onerecv(). Wywołanie funkcji tcp_onerecv() jest równoważne do wywołania:
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
Funkcja tcp_linerecv() wewnętrznie wywołuje funkcje sock_linerecv(). Wywołanie funkcji tcp_linerecv() jest równoważne do wywołania:
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:
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:
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
Funkcja udp_sockoptget() wewnętrznie wywołuje funkcje sock_optget(). Wywołanie funkcji udp_sockoptget() jest równoważne do wywołania:
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
Funkcja udp_sockoptset() wewnętrznie wywołuje funkcje sock_optset(). Wywołanie funkcji udp_sockoptset() jest równoważne do wywołania:
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
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 *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,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:
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