TCPACCEPT() | Accept a connection on a socket. |
TCPCLOSE() | Закрыть соединение. |
TCPCONNECT() | Установить соединение с сервером. |
TCPLISTEN() | Слушать порт. |
TCPREAD() | Прочитать в буфер данные из соединения. |
TCPWRITE() | Передать данные из буфера в соединения. |
TCPACCEPT(<nSock>[, <nTimeout>]) --> <nNewSocket>
Возвращает числовое значение <nNewSocket> дескриптор нового сокета или -1, если произошла ошибка.
TCPACCEPT() выбирает первый запрос на соединение из очереди ожидающих, создает новый сокет со свойствами исходного <nSock>, и возвращает новый дескриптор файла <nNewSocket>.
FERROR() и FERRORSTR() хранят номер и описание ошибки.
#define DEFPORT 3000 local nH, nPort, nCon nPort := DEFPORT if (nH := TCPLISTEN( nPort, 10 )) == -1 ? "tcpsrv: Error listen on port ", nPort ? return( 1 ) endif //? "wait client connection" do while( .t. ) ? "wait client connection",time() if (nCon := TCPACCEPT( nH, 5000 )) != -1 ? "start",nH,nCon start( {|nC| /* reading data from connection */ TCPREAD(nC....)}, nCon ) endif sleep(0.01) enddo TCPCLOSE( nH )
TCPCLOSE(<nConnection>) --> TRUE || FALSE
Возвращает TRUE, если соединение успешно закрыто.
TCPCLOSE() закрывает открытое соединене и возвращает TRUE в случае успешного завершения операции.
nH := TCPLISTEN(3000) If nH > 0 .... TCPCLOSE(nH) endif
TCPCONNECT(<sHostName>[, <nPort>][, <nTimeout>]) --> <nConnection>
Возвращает номер соединения или -1.
TCPCONNECT() устанавливает соединение с сервером <sHostName> и создает сокет к порту <nPort>.Возвращат номер соединения <nConnection> или -1 в случае ошибки. FERROR() и FERRORSTR() хранят номер и описание ошибки.
con := TCPCONNECT("http://www.itk.ru") if con > -1 ? "connection: ", con .... TCPCLOSE(con) else ? FERROR() endif
TCPLISTEN(<nPort>[, <nBackLog>]) --> <nErrNo>
Возвращает числовое значение <nErrNo>: ноль - операция завершилась успешно, <nErrNo> - код ошибки.
TCPLISTEN() создает сокет и устанавливает прослушивание входящих соединений.
#define DEFPORT 3000 local nH, nPort, nCon nPort := DEFPORT if (nH := TCPLISTEN( nPort, 10 )) == -1 ? "tcpsrv: Error listen on port ", nPort ? return( 1 ) endif //? "wait client connection" do while( .t. ) ? "wait client connection",time() if (nCon := TCPACCEPT( nH, 5000 )) != -1 ? "start",nH,nCon start( {|nC| /* reading data from connection */ TCPREAD(nC....)}, nCon ) endif sleep(0.01) enddo TCPCLOSE( nH )
TCPREAD(<nConnection>, @<sBuffer>, <nLen>[, <nTimeout>]) --> <nLenBuf>
Returns numeric value - is the realy number of bytes received, or -1 if an error occurred.
TCPREAD() читает из соединения <nConnection> данные (не больше <nLen> байт) и записывает их в буфер <sBuffer>. FERROR() и FERRORSTR() хранят номер и описание ошибки.
con := TCPCONNECT("http://www.itk.ru") if con > -1 ? "connection: ", con buf := "" tr := TCPREAD(con, @buf, 1024) if tr > -1 ? buf else ? "Error:", FERROR(), ":", FERRORSTR() endif TCPCLOSE(con) else ? FERROR(), FERRORSTR() endif
TCPWRITE(<nConnection>, <sBuffer>, <nLen>[, <nTimeout>]) --> <nLenBuf>
Returns numeric value - is the realy number of bytes commited, or -1 if an error occurred.
TCPWRITE() пытается передать некоторые данные <sBuffer> (длиной <nLen> байт) в соединение <nConnection> данные (не больше <nLen> байт). FERROR() и FERRORSTR() хранят номер и описание ошибки.
local cBuf := space(5), nL, cTxt, nH, nPort nPort := DEFPORT if (nH := TCPLISTEN( nPort, 10 )) == -1 ? "tcpsrv: Error listen on port ", nPort ? return( 1 ) endif do while( .t. ) if( (nL := TCPREAD( nH, @cBuf, len(cBuf), 60000 )) > 0 ) ? "tcpsrv, read : ", nL if( nL == 1 .and. upper( substr(cbuf,1,1)) == "Q" ) exit endif cTxt := "tcpsrv:" + substr(cBuf, 1, nL) TCPWRITE( nH, cTxt ) elseif ferror() == 32 ? "Error:",ferrorstr()+":","closed task:",nh exit endif //? "tcpsrv, read : ", nL,nh,time() enddo TCPCLOSE( nH )
Пред. | Начало | След. |
PACK/UNPACK | Уровень выше | INFO |