b9836e09efad03487c9046e54f70da36f42f371a
+ harbour/src/rtl/hbsockhb.c
+ added wrapper functions for Harbour socket API
The list of exported functions is:
HB_SOCKETGETERROR() --> nSocketError
HB_SOCKETGETOSERROR() --> nOSError
HB_SOCKETERRORSTRING( [ nSocketErrror = hb_socketGetError() ] ) --> cError
HB_SOCKETGETSOCKNAME( hSocket ) --> aAddr | NIL
HB_SOCKETGETPEERNAME( hSocket ) --> aAddr | NIL
HB_SOCKETOPEN( [ nDomain = HB_SOCKET_PF_INET ] , [ nType = HB_SOCKET_PT_STREAM ], [ nProtocol = 0 ] ) --> hSocket
HB_SOCKETCLOSE( hSocket ) --> nSuccess
HB_SOCKETSHUTDOWN( hSocket, [ nMode = HB_SOCKET_SHUT_RDWR ] ) --> nSuccess
HB_SOCKETBIND( hSocket, aAddr ) --> nSuccess
HB_SOCKETLISTEN( hSocket, [ iQueueLen = 10 ] ) --> nSuccess
HB_SOCKETACCEPT( hSocket, [ @aAddr ], [ nTimeout = FOREVER ] ) --> nSuccess
HB_SOCKETCONNECT( hSocket, aAddr, [ nTimeout = FOREVER ] ) --> nSuccess
HB_SOCKETSEND( hSocket, cBuffer, [ nLen = LEN( cBuffer ) ], [ nFlags = 0 ], [ nTimeout = FOREVER ] ) --> nBytesSent
HB_SOCKETSENDTO( hSocket, cBuffer, [ nLen = LEN( cBuffer ) ], [ nFlags = 0 ], aAddr, [ nTimeout = FOREVER ] ) --> nBytesSent
HB_SOCKETRECV( hSocket, @cBuffer, [ nLen = LEN( cBuffer ) ], [ nFlags = 0 ], [ nTimeout = FOREVER ] ) --> nBytesRecv
HB_SOCKETRECVFROM( hSocket, @cBuffer, [ nLen = LEN( cBuffer ) ], [ nFlags = 0 ], @aAddr, [ nTimeout = FOREVER ] ) --> nBytesRecv
HB_SOCKETSETBLOCKINGIO( hSocket, lValue ) --> nSuccess
HB_SOCKETSETNODELAY( hSocket, lValue ) --> nSuccess
HB_SOCKETSETREUSEADDR( hSocket, lValue ) --> nSuccess
HB_SOCKETSETKEEPALIVE( hSocket, lValue ) --> nSuccess
HB_SOCKETSETBROADCAST( hSocket, lValue ) --> nSuccess
HB_SOCKETSETSNDBUFSIZE( hSocket, nValue ) --> nSuccess
HB_SOCKETSETRCVBUFSIZE( hSocket, nValue ) --> nSuccess
HB_SOCKETGETSNDBUFSIZE( hSocket, @nValue ) --> nSuccess
HB_SOCKETGETRCVBUFSIZE( hSocket, @nValue ) --> nSuccess
HB_SOCKETSETMULTICAST( hSocket, cAddr ) --> nSuccess
HB_SOCKETSELECTREAD( hSocket, [ nTimeout = FOREVER ] ) --> nRet
HB_SOCKETSELECTWRITE( hSocket, [ nTimeout = FOREVER ] ) --> nRet
HB_SOCKETSELECTWRITEEX( hSocket, [ nTimeout = FOREVER ] ) --> nRet
HB_SOCKETSELECT( aRead, lSetRead, aWrite, lSetWrite, aExcep, lSetExcep, [ nTimeout = FOREVER ] ) --> nRet
HB_SOCKETRESOLVEINETADDR( cAddr, nPort ) --> aAddr | NIL
HB_SOCKETRESOLVEADDR( cAddr, [ nFamily = HB_SOCKET_AF_INET ] ) --> cResolved
HB_SOCKETGETHOSTS( cAddr, [ nFamily = HB_SOCKET_AF_INET ] ) --> aHosts
HB_SOCKETGETIFACES( [ nFamily ], [ lNoAliases ] ) --> aIfaces
+ harbour/examples/udpds
+ harbour/examples/udpds/udpds.prg
+ added UDP Discovery Server sample
This module demonstrates a simple UDP Discovery Server
If you run some service on the network (ex., netio), you need to
know server IP address and configure client to connect to this
address. UDPDS helps client to find server address (or addresses
of multiple servers) on local network. UDPDS should be run in
parallel to real server (ex., netio). Server part of UDPDS uses
threads, so, it should be compiled in MT mode.
Server functions:
UDPDS_Start( nPort, cName [, cVersion ] ) --> hServer
UDPDS_Stop( hServer )
Client function:
UDPDS_Find( nPort, cName ) --> { {"ip_addr_1", "version_1"}, ... }
; Please add .hbc, .hbp files, if it is required. This module requires
only a standard harbour runtime library and MT VM.
Description
Harbour Core — Reference source for Five development
Languages
C
80.3%
xBase
17.8%
Makefile
0.6%
C++
0.4%
Harbour
0.4%
Other
0.3%