Receives a Telnet option sub-negotiation sequence from a terminal service server, which is a shortcut to IAC SB <Option> <Data> IAC SE.
WebAPI.bdh
WebTelnetRecvSubNegotiation( in hWeb : number, in iOpt : number optional, in sDataExpected : string optional, out iOptReceived : number optional, in sDataReceived : string optional ): boolean;
true if the operation was successful
false otherwise
Parameter | Description |
---|---|
hWeb | Valid handle to a Web connection created by WebTcpipConnect and set to Telnet mode using WebTcpipSetTelnetMode. |
iOpt | Optional Telnet sub-negotiation option that is expected from the server (optional). See constants in WebTelnetSendCommand for valid values. Set -1 when no validation is to be performed. |
sDataExpected | Binary sub-negotiation data string expected from the server (optional). Set to NULL if no validation is to be performed. |
iOptReceived | Optional variable where the sub-negotiation option received from the server is to be placed (optional). |
sDataReceived | Optional output string buffer where data received from the server is to be placed (optional). |
dcltrans transaction TInit begin StrSetHostCP(28591); // 28591 (ISO 8859-1 Latin I) end TInit; transaction TMain var hWeb0 : number; sBuffer : string; sBoundary : string; nOption : number; begin WebTcpipConnect(hWeb0, "My.TelnetHost.IP", WEB_PORT_TELNET); WebTcpipSetTelnetMode(hWeb0, TERMINAL_TYPE_ANSI, 80, 24, true, TELNET_MODEOPT_SYNC); WebTcpipGetOptions(hWeb0, nOption); if nOption <> TELNET_MODEOPT_RFC_1576 then WebTcpipSetOptions(hWeb0, TELNET_MODEOPT_RFC_1576); end; WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_TerminalType); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_TerminalSpeed); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_XDisplayLocation); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_NewEnvironment); WebTelnetSendCommand(hWeb0, TELNET_CMD_WILL, TELNET_OPT_TerminalType); WebTelnetSendCommand(hWeb0, TELNET_CMD_WONT, TELNET_OPT_TerminalSpeed); WebTelnetSendCommand(hWeb0, TELNET_CMD_WONT, TELNET_OPT_XDisplayLocation); WebTelnetSendCommand(hWeb0, TELNET_CMD_WONT, TELNET_OPT_NewEnvironment); WebTelnetRecvSubNegotiation(hWeb0, TELNET_OPT_TerminalType); WebTelnetSendTerminalType(hWeb0, "vt100"); WebTelnetRecvCommand(hWeb0, TELNET_CMD_WILL, TELNET_OPT_SuppressGoAhead); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_Echo); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_NegotiateWindowSize); WebTelnetRecvCommand(hWeb0, TELNET_CMD_WILL, TELNET_OPT_Status); WebTelnetRecvCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_RemoteFlowControl); WebTelnetSendCommand(hWeb0, TELNET_CMD_DO, TELNET_OPT_SuppressGoAhead); WebTelnetSendCommand(hWeb0, TELNET_CMD_WONT, TELNET_OPT_Echo); WebTelnetSendCommand(hWeb0, TELNET_CMD_WILL, TELNET_OPT_NegotiateWindowSize); WebTelnetSendSubNegotiation(hWeb0, TELNET_OPT_NegotiateWindowSize, "\h00500018"); WebTelnetSendCommand(hWeb0, TELNET_CMD_DONT, TELNET_OPT_Status); WebTelnetSendCommand(hWeb0, TELNET_CMD_WONT, TELNET_OPT_RemoteFlowControl); WebTelnetRecvCommand(hWeb0, TELNET_CMD_WILL, TELNET_OPT_Echo); WebTcpipGetPacketBoundary(hWeb0, sBoundary); WebTcpipRecvPacketsUntilData(hWeb0, "login: "); WebTelnetTypeKeys(hWeb0, StrToHostCP("leo"), 359.3, TELNET_FLAG_CASE_SENSITIVE); WebTcpipSendBin(hWeb0, "\h0D00"); WebTcpipRecvExact(hWeb0, NULL, 390); WebTcpipSetPacketBoundary(hWeb0, sBoundary); WebTcpipRecvUntilIdle(hWeb0, NULL, 5000); WebTcpipSendBin(hWeb0, "\h0D000D0A"); WebTcpipRecvPackets(hWeb0, NULL, 3); WebTcpipSendBin(hWeb0, "\h0D00"); WebTcpipSendPacket(hWeb0, StrToHostCP("8") + "\h0D00"); WebTcpipRecvClose(hWeb0, NULL); WebTcpipShutdown(hWeb0); end TMain;