2012-04-25 00:03 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbmisc/udpds.prg
+ updated to be CP agnostic
+ changed protocol to use UTF8 through the wire
; NOTE: requires not yet committed HB_BLEFT()
* include/harbour.hbx
* minor
This commit is contained in:
@@ -16,6 +16,15 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-04-25 00:03 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* contrib/hbmisc/udpds.prg
|
||||
+ updated to be CP agnostic
|
||||
+ changed protocol to use UTF8 through the wire
|
||||
; NOTE: requires not yet committed HB_BLEFT()
|
||||
|
||||
* include/harbour.hbx
|
||||
* minor
|
||||
|
||||
2012-04-24 17:34 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* harbour/include/harbour.hbx
|
||||
* harbour/src/rtl/chruni.c
|
||||
|
||||
@@ -31,15 +31,16 @@ FUNCTION hb_UDPDS_Find( nPort, cName )
|
||||
|
||||
IF ! Empty( hSocket := hb_socketOpen( , HB_SOCKET_PT_DGRAM ) )
|
||||
hb_socketSetBroadcast( hSocket, .T. )
|
||||
IF hb_socketSendTo( hSocket, Chr( 5 ) + cName + Chr( 0 ), , , { HB_SOCKET_AF_INET, "255.255.255.255", nPort } ) == Len( cName ) + 2
|
||||
cName := hb_StrToUTF8( cName )
|
||||
IF hb_socketSendTo( hSocket, hb_BChar( 5 ) + cName + hb_BChar( 0 ), , , { HB_SOCKET_AF_INET, "255.255.255.255", nPort } ) == hb_BLen( cName ) + 2
|
||||
nTime := hb_milliseconds()
|
||||
nEnd := nTime + 100 /* 100ms delay is enough on LAN */
|
||||
aRet := {}
|
||||
DO WHILE nEnd > nTime
|
||||
cBuffer := Space( 2000 )
|
||||
nLen := hb_socketRecvFrom( hSocket, @cBuffer, , , @aAddr, nEnd - nTime )
|
||||
IF Left( cBuffer, Len( cName ) + 2 ) == Chr( 6 ) + cName + Chr( 0 )
|
||||
AAdd( aRet, { aAddr[ 2 ], SubStr( cBuffer, Len( cName ) + 3, nLen - Len( cName ) - 2 ) } )
|
||||
IF hb_BLeft( cBuffer, hb_BLen( cName ) + 2 ) == hb_BChar( 6 ) + cName + hb_BChar( 0 )
|
||||
AAdd( aRet, { aAddr[ 2 ], hb_BSubStr( cBuffer, hb_BLen( cName ) + 3, nLen - hb_BLen( cName ) - 2 ) } )
|
||||
ENDIF
|
||||
nTime := hb_milliseconds()
|
||||
ENDDO
|
||||
@@ -75,6 +76,9 @@ STATIC PROCEDURE UDPDS( hSocket, cName, cVersion )
|
||||
|
||||
LOCAL cBuffer, nLen, aAddr
|
||||
|
||||
cName := hb_StrToUTF8( cName )
|
||||
cVersion := iif( hb_isString( cVersion ), hb_StrToUTF8( cVersion ), "" )
|
||||
|
||||
DO WHILE .T.
|
||||
cBuffer := Space( 2000 )
|
||||
BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
|
||||
@@ -95,9 +99,9 @@ STATIC PROCEDURE UDPDS( hSocket, cName, cVersion )
|
||||
* Broadcast request: ENQ, ServerName, NUL
|
||||
* Server response: ACK, ServerName, NUL, Version
|
||||
*/
|
||||
IF Left( cBuffer, nLen ) == Chr( 5 ) + cName + Chr( 0 )
|
||||
IF hb_BLeft( cBuffer, nLen ) == hb_BChar( 5 ) + cName + hb_BChar( 0 )
|
||||
BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
|
||||
hb_socketSendTo( hSocket, Chr( 6 ) + cName + Chr( 0 ) + iif( cVersion == NIL, "", cVersion ), , , aAddr )
|
||||
hb_socketSendTo( hSocket, hb_BChar( 6 ) + cName + hb_BChar( 0 ) + cVersion, , , aAddr )
|
||||
END SEQUENCE
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
@@ -621,13 +621,13 @@ DYNAMIC hb_isSymbol
|
||||
DYNAMIC hb_isTimeStamp
|
||||
DYNAMIC hb_jsonDecode
|
||||
DYNAMIC hb_jsonEncode
|
||||
DYNAMIC hb_KeyChar
|
||||
DYNAMIC hb_KeyClear
|
||||
DYNAMIC hb_KeyIns
|
||||
DYNAMIC hb_KeyLast
|
||||
DYNAMIC hb_KeyNext
|
||||
DYNAMIC hb_KeyPut
|
||||
DYNAMIC hb_KeyStd
|
||||
DYNAMIC hb_keyChar
|
||||
DYNAMIC hb_keyClear
|
||||
DYNAMIC hb_keyIns
|
||||
DYNAMIC hb_keyLast
|
||||
DYNAMIC hb_keyNext
|
||||
DYNAMIC hb_keyPut
|
||||
DYNAMIC hb_keyStd
|
||||
DYNAMIC hb_langErrMsg
|
||||
DYNAMIC hb_langMessage
|
||||
DYNAMIC hb_langName
|
||||
|
||||
Reference in New Issue
Block a user