CLIPPER com TCP/IP.
Moderador: Moderadores
TCP/IP NO DOS
Cara ! eu busco isso a muito tempo ! mas eu percebi que o codigo C que o amigo mostrou acima é um extender do Cliente 32 bits da Novell for DOS, e nao vai funcionar para nos, pois precisa da novell para funcionar, ou seja ! a novell emula o TCP/IP e vc pode atribuir endereços IP virtuais para os clinetes ! mas nada mais do que uma emulação ! e só funciona no mundo da Novell. E como o vmars para linux que emula uma rede Novell, ou u DOS-EMU que emula um DOS no Linux !
Mas eu vou ficar atento nesse assunto. Pois me interessa bastante. Eu estou relutando em ter que migrar meus sistemas para X-HARBOUR, mas me parece que nao vou ter jeito !
OBS.. O mesmo codigo esta em uma pasta de instalação do Cliente for DOS da Novell, que pode ser baixado gratuitamente no site da Novell.
Mas eu vou ficar atento nesse assunto. Pois me interessa bastante. Eu estou relutando em ter que migrar meus sistemas para X-HARBOUR, mas me parece que nao vou ter jeito !
OBS.. O mesmo codigo esta em uma pasta de instalação do Cliente for DOS da Novell, que pode ser baixado gratuitamente no site da Novell.
E aí?
O Cloega Wagner conseguiu compilar a função?
Se alguém conseguir, se puder me enviar o OBJ, vou testar com os drivers de placa de rede, etc...
Quem sabe a gente encontra uma solução..
O Cloega Wagner conseguiu compilar a função?
Se alguém conseguir, se puder me enviar o OBJ, vou testar com os drivers de placa de rede, etc...
Quem sabe a gente encontra uma solução..
Adriano da Silva
Utilizo Clipper 5.3b, _DBFCDX, EXOSPACE e CA-Tools 3.0c. (abandonando)
Harbour 3.0.0 on Linux Ubuntu 14.04LTS 64 bit.
Utilizo Clipper 5.3b, _DBFCDX, EXOSPACE e CA-Tools 3.0c. (abandonando)
Harbour 3.0.0 on Linux Ubuntu 14.04LTS 64 bit.
- rochinha
- Administrador

- Mensagens: 4665
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
O tópico em questão foi iniciado com uma duvida de SGBD e acabou virando por TCP-IP por nossa culpa.
Mas em ralação ao problema inicial quanto a trabalhar com SGBDs de peso o nosso amigo MWAdriano poderia fazer uso do OpenPath que implementa o uso de SQL sob um protocolo IPX.
Caso deseje outras ferramentas de trabalho com BDs como SQL-Server, Sybase, Oracle, MySQL e outros em ainda usar o bom e velho Clipper pode sacar mão de usar TopConnect, Mediator e UltiRoute( talvez o de mais facil implementação ).
Quanto a compilação do arquivo de implementação TCP-IP aqui postado, caso seja necessário, descoleui recentemente o Borland C++ 3.1 e disponibilizei-o em http://www.softclever.com/downloads/bcc31.zip
@braços :?)
O tópico em questão foi iniciado com uma duvida de SGBD e acabou virando por TCP-IP por nossa culpa.
Mas em ralação ao problema inicial quanto a trabalhar com SGBDs de peso o nosso amigo MWAdriano poderia fazer uso do OpenPath que implementa o uso de SQL sob um protocolo IPX.
Caso deseje outras ferramentas de trabalho com BDs como SQL-Server, Sybase, Oracle, MySQL e outros em ainda usar o bom e velho Clipper pode sacar mão de usar TopConnect, Mediator e UltiRoute( talvez o de mais facil implementação ).
Quanto a compilação do arquivo de implementação TCP-IP aqui postado, caso seja necessário, descoleui recentemente o Borland C++ 3.1 e disponibilizei-o em http://www.softclever.com/downloads/bcc31.zip
@braços :?)
Qual o TOPICO que você criou sobre o tcp ip
Favor me passar o link para o TCP IP no clipper por favor.
- rochinha
- Administrador

- Mensagens: 4665
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
Este é O FORUM de conhecimento, talvez ou com creteza o maior knowledge base para xBase no Brasil.
Este tópico é tão antigo que eu nem lembrava de ter participado, mas ai vai amiguinho:
http://www.codecomments.com/archive265- ... 70096.html
Codigo completo
Este é o link que voce precisa para pegar o codigo na internet.
Boa sorte.
@braços :?)
Este é O FORUM de conhecimento, talvez ou com creteza o maior knowledge base para xBase no Brasil.
Este tópico é tão antigo que eu nem lembrava de ter participado, mas ai vai amiguinho:
http://www.codecomments.com/archive265- ... 70096.html
Codigo completo
Código: Selecionar todos
// TEST.PRG
#define NNTP_PORT 119
#define NO_ERROR 0
#define CRLF (chr(13) + chr(10))
local tmp
if tcp_open('193.110.122.97', NNTP_PORT) == NO_ERROR
? tcp_read()
// 200 nemesis.news.tpi.pl InterNetNews NNRP server INN 2.3.4 ...
tcp_write('DATE' + CRLF)
?? tmp := tcp_read()
// 111 20040902053408
?? transform(substr(tmp, 5), '@r 9999.99.99 99:99:99'), 'GMT'
tcp_write('QUIT' + CRLF)
? tcp_read()
// 205 .
tcp_close()
endif
// ...
// TCPIP.C
// bcc -c -ml -w tcpip.c
// blinker ... search blxclp53 ...
#include <string.h>
#include <extend.api>
#include <blx286.h>
#define BUFF_SIZE 0x2000
#define PROTOCOL_TCP 6
#define NO_ERROR 0
#define ERR_SOCKET 100
#define ERR_NO_SOCKET 101
#define ERR_PARAMETERS 102
#define ERR_BLINKX_API 103
#define ERR_NO_TCP_STACK 104
#define ERR_POINTER 105
#define ERR_NO_POINTER 106
typedef struct
{
BYTE _dummy1[21], function, socket, error_code;
WORD port;
BYTE ip[4];
WORD _dummy2, length_of_packet, pointer;
BYTEP rm_buff;
WORD length_of_buffer;
BYTE _dummy3[120 /* ? */];
} RCB, *RCBP; // Request Control Block
extern FARP _xalloclow(WORD);
extern void _xfreelow(FARP);
extern FARP _bset(FARP, int, WORD);
HIDE REALPTR TCPIPstack_entry_point = NULL;
HIDE RCBP pm_rcb = NULL, rm_rcb;
HIDE BYTEP pm_buff, rm_buff;
HIDE BYTE socket = 0, error_code = NO_ERROR;
HIDE void near ndot2ip(BYTEP ip, BYTEP pdot)
{
int i, ch;
_bset(ip, 0, 4);
for(i = 0; i < 4; i++) do
{
if((ch = *pdot++) == '\0') return;
if(ch >= '0' && ch <= '9') ip[i] = ip[i] * 10 + ch - '0';
} while(ch != '.');
}
HIDE BOOL near rm_call(void)
{
REGS16 regs16;
pm_rcb->socket = socket;
pm_rcb->error_code = 0xff;
_bset((void*)®s16, 0, sizeof(REGS16));
regs16.es = SELECTOROF(rm_rcb);
regs16.si = OFFSETOF (rm_rcb);
if(DosRealFarCall(TCPIPstack_entry_point
, ®s16, NULL, 0) != 0)
{error_code = ERR_BLINKX_API; return FALSE;}
return (error_code = pm_rcb->error_code) == 0;
}
HIDE BYTE near _TCP_open(void)
{
REGS16 regs16;
error_code = NO_ERROR;
if(socket != 0) return ERR_SOCKET;
if(PCOUNT < 2 || !ISCHAR(1) || !ISNUM(2)) return ERR_PARAMETERS;
regs16.ax = 0x7a40;
if(DosRealIntr(0x2f, ®s16, NULL, 0) != 0) return ERR_BLINKX_API;
if((BYTE)regs16.ax != 0xff) return ERR_NO_TCP_STACK;
if((TCPIPstack_entry_point =
(REALPTR)MK_FP(regs16.es, regs16.di)) == NULL) return ERR_NO_POINTER;
if(pm_rcb != NULL) return ERR_POINTER;
if((pm_rcb = (RCBP)_xalloclow(sizeof(RCB) + BUFF_SIZE)) == NULL)
return ERR_NO_POINTER;
rm_rcb = (RCBP)DosProtToReal(pm_rcb);
pm_buff = (BYTEP)pm_rcb + sizeof(RCB);
rm_buff = (BYTEP)rm_rcb + sizeof(RCB);
_bset(pm_rcb, 0, sizeof(RCB));
pm_rcb->function = 0x11;
pm_rcb->port = PROTOCOL_TCP;
if(!rm_call()) return error_code;
if((socket = pm_rcb->socket) == 0) return ERR_NO_SOCKET;
_bset(pm_rcb, 0, sizeof(RCB));
pm_rcb->function = 4;
pm_rcb->port = ((WORD)_parni(2) >> 8) + (_parni(2) << 8);
ndot2ip(pm_rcb->ip, (BYTEP)_parc(1));
if(!rm_call()) return error_code;
return NO_ERROR;
}
HIDE void near _TCP_close(void)
{
if(socket == 0) return;
_bset(pm_rcb, 0, sizeof(RCB));
pm_rcb->function = 3;
rm_call();
socket = 0;
}
HIDE void near _TCP_free(void)
{
if(pm_rcb == NULL) return;
_xfreelow(pm_rcb);
pm_rcb = NULL;
}
CLIPPER TCP_open(void)
{
BYTE old_socket = socket, result;
RCBP old_pm_rcb = pm_rcb;
if((result = _TCP_open()) != NO_ERROR)
{
if(old_socket == 0 ) _TCP_close();
if(old_pm_rcb == NULL) _TCP_free();
}
_retni((int)(error_code = result));
}
CLIPPER TCP_read(void) // return: string + "\r\n"
{
if(socket == 0) {error_code = ERR_NO_SOCKET; _retc((BYTEP)""); return;}
_bset(pm_rcb, 0, sizeof(RCB));
pm_rcb->function = 0x12;
pm_rcb->length_of_packet = BUFF_SIZE;
pm_rcb->pointer = 1;
pm_rcb->rm_buff = rm_buff;
pm_rcb->length_of_buffer = BUFF_SIZE;
if(!rm_call()) pm_rcb->length_of_packet = 0;
pm_buff[pm_rcb->length_of_packet] = '\0';
_retc(pm_buff);
}
CLIPPER TCP_write(void)
{
if(socket == 0) {error_code = ERR_NO_SOCKET; return;}
if(PCOUNT < 1 || !ISCHAR(1)) {error_code = ERR_PARAMETERS; return;}
strcpy((char*)pm_buff, _parc(1));
_bset(pm_rcb, 0, sizeof(RCB));
pm_rcb->function = 0x14;
pm_rcb->length_of_packet = BUFF_SIZE;
pm_rcb->pointer = 1;
pm_rcb->rm_buff = rm_buff;
pm_rcb->length_of_buffer = strlen((char*)pm_buff);
rm_call();
}
CLIPPER TCP_close(void)
{
if(socket == 0) {error_code = ERR_NO_SOCKET; return;}
_TCP_close();
_TCP_free();
}
CLIPPER TCP_error(void)
{
_retni((int)error_code);
}
Regards
--
Franciszek BalabanBoa sorte.
@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
Dércio_Luiz_Zanatta
- Usuário Nível 3

- Mensagens: 153
- Registrado em: 11 Jan 2006 15:37
- Localização: Ibirubá - RS
CA-TOOLS
Não sei se vou poder te ajudar, mas vc disse que não pode utilizar o blinker por estar usando a CA-TOOLS e essa é incompativel com o modo protegido (se entendi direito)
para isso existe uma versão da CA-TOOLS para modo protegido.. a CTP.LIB e CTUS.OBJ
Um grande abraço
Dércio Zanatta
para isso existe uma versão da CA-TOOLS para modo protegido.. a CTP.LIB e CTUS.OBJ
Um grande abraço
Dércio Zanatta
me ajudem
Estou precisando fazer uma comunicação ponto a ponto com o CLIPPER, não tenho drive compartilhado, tenho que usar um protocolo direto, não posso usar netware, por favor me ajudem, vi algo em C com IPX serve mas não consegui funcionar com o CLIPPER, pode ser em TCP IP mas para DOS puro blz.
Por favor me ajudem, estou disposto a pagar por uma lib dessas me ajudem.
Por favor me ajudem, estou disposto a pagar por uma lib dessas me ajudem.

