SOCK.Send |
![]() ![]() |
ret = SOCK.Send( nSocket AS INTEGER, data AS INTEGER|FLOAT|ARRAY|STRING, [nLength AS INTEGER=SL_USE_DEFAULT] ) AS INTEGER
Sends data to the connected server. If length is omitted, then the length of the data buffer is used. The function returns the number of bytes sent.
Example:
' Reads one frame of 3D data from a RT3DServer
OPTION BASE 1
$LIBRARY "MyBASIC2_ExtLib" $LIBRARY "MyBASIC2_SockLib"
DIM nSocket AS INTEGER DIM header(2) AS INTEGER DIM nReceived AS INTEGER DIM nMarkers AS INTEGER DIM nFrameNo AS INTEGER DIM i AS INTEGER
' Establich a connection with a local RT3DServer nSocket = SOCK.Connect( "127.0.0.1", 1221 )
IF nSocket > 0 THEN PRINT "Connect to IP: ";SOCK.GetServerName( nSocket );", Port: ";SOCK.GetPort( nSocket ),
' Request a frame from RT3DServer SOCK.Send( nSocket, "S" )
' Get frame header with a 10 second timeout nReceived = SOCK.Receive( nSocket, header, 8, 10 )
IF nReceived = 8 THEN
' The header is formatted as ' ' Byte 0: Type '3' ' Byte 1: Version '1' ' Byte 2..5: Frame Number ' Byte 6..7: No of Markers ' nMarkers = WORD.HI( header(2) ) nFrameNo = LONG.Make( WORD.HI( header(1) ), WORD.LO( header(2) ) )
PRINT "Data Type: "; CHR( BYTE.LO( WORD.LO( header(1) ) ) ), PRINT "Data Version: "; CHR( BYTE.HI( WORD.LO( header(1) ) ) ), PRINT "Frame Number: "; nFrameNo, PRINT "No Of Markers: "; nMarkers,
' Create a frame buffer using the number of markers from header DIM frame( nMarkers, 3 ) AS REAL
' Read the 3D frame from server nReceived = SOCK.Receive( nSocket, frame )
FOR i = 1 TO nMarkers PRINT FORMAT( "Marker %d: %8.1f, %8.1f, %8.1f", i, frame(i,1), frame(i,2), frame(i,3) ), ENDFOR ELSE PRINT "ERROR: Receiving Frame Header", ENDIF
' Done, close down the connection SOCK.Close( nSocket ) ELSE PRINT "ERROR: Unable to connect to Server", ENDIF
END
|