Ir para conteúdo
Fórum Script Brasil
  • 0

Modelo Cliente / Servidor em C


Quiel Simões

Pergunta

Estou fazendo um programa em C da disciplica Sistemas Distribuidos, onde é realzidado um trabalho de cliente/servidor, o servidor hospeda um compilador (GCC) onde os cliente mandam o codigo C para o servidor para ser compilador e é retornado o executavel (caso não possua erros) ou o log da compilição com os erros (caso contenha erros) para o cliente! meu problema é:

logo no cliente o usuário digita o nome do arquivo a ser enviado q é guardado na memória, no compilador eu uso o comando

system("gcc <nome_do_fonte>");

so que tenho um problema, ele interpreta o <nome_do_fonte> ao pé da letra, diz que o arquivo <nome_do_fonte> não pode ser encontrado, so que nome do fonte é uma variavel que contem o nome do fonte.

uma solução que encontrei foi escrever o arquivo que esta na memória para o disco com um nome estático:

ex: codigo.c e usar o comando: system(gcc codigo.c); que assim tenho a certeza que funcionária.

mais estou com dificuldade pra escrever este arquivo que esta na memória para o disco =|

Quiel Simões

Editado por Quiel Simões
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Quiel...

Você pode tentar o seguinte...

Pegue um char * Qualquer. e use:

sprintf(Qualquer, "gcc %s", nome_do_fonte);

system(Qualquer);

isso resolve a parte dele interpretar ao pé da letra, veja se funciona....

sobre a segunda parte da sua dúvida, não entendi bem sua dúvida, acredito que você vai ter q criar um arquivo no disco, escrever ele, e salvar com o nome certo, é isso que você quer?

Link para o comentário
Compartilhar em outros sites

  • 0

tentei o que você citou Gluilherme mais não funcionou... na verdade o código está na memória (o qual o servidor acaba de receber do cliente) uma solução seria escrever este código que está na memória no disco mais encontrei dificuldade.

um exemple seria:

// Escreve o arquivo no disco

entrada = fopen(nome_fonte, "r");

if(entrada == NULL){

printf("não foi possivel abrir o arquivo!");

exit(1);

}

else{

saida = fopen("codigo.c", "w");

while(!eof(entrada)) {

fread(Buffer, sizeof(Buffer), 1, saida);

puts(saida);

}

}

O arquivo codigo.c é gerado, porém vazio! qual o erro?

Quiel Simões

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos la.. Sobre o que eu falei, você precisaria alocar a variável qualquer.

Caso seja um código em C:

int tamanho = 100;

char * Qualquer = (char *) malloc(tamanho * sizeof(char));

sprintf(Qualquer, "gcc %s", nome_fonte);

tente isso

quanto a escrever em disco, use por exemplo o fputs:

fputs(saida, Buffer);

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que funcionou Guilherme, mais sabe como é não é?.. o problema vem em cascata, o compilador agora esta dando um erro!

"gcc: installation problem, cannot exec `cc1': No such file or directory" o engracado que tenho outro progaminha que chama ele passando o codigo ele compila normalmente.

Link para o comentário
Compartilhar em outros sites

  • 0

ixi..

agora você me pegou, erros com o compilador já não é comigo...

Será que não é algo com bibliotecas, pois você usa o system e etc...

se outro programa semelhante funciona, vai comentando alguns blocos, até achar onde está, sabendo exatamente que instrução causa isso talvez seja mais fácil achar o problema...

Link para o comentário
Compartilhar em outros sites

  • 0

o problema do compilador era:

--> eu tinha que especificar o local onde o mesmo se encontra;

--> e outro erro era a extenção do arquivo que não estava sendo colocado;

Quanto a isso problema resolvido! mais parei em um ponto bem grave... já que o trabalho é sobre comunicação entre processo remoto. Só que no meu caso esta rodando na máquina local, me surgiu o seguinte problema:

Eu separei servidor e cliente (estavam na mesma pasta, onde funcionava perfeitamente), âmbos se conectam porém ao enviar o arquivo (.TXT) para o servidor ele da erro ao abrir o arquivo. porque será? ele n recebe o arquivo? antes compilava porque o arquivo existia na mesma pasta? >.<

Quiel Simões

Editado por Quiel Simões
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...