Ir para conteúdo
Fórum Script Brasil

Marina_DC

Membros
  • Total de itens

    12
  • Registro em

  • Última visita

Sobre Marina_DC

Marina_DC's Achievements

0

Reputação

  1. Marina_DC

    problemas com c

    Tente usar as bibliotecas padrões do C. Nesse site é tudo bem explicadinho e fácil de acompanhar. http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c520.html Para comparar você pode usar a função strcmp. Exemplo: strcmp(string1,string2); Se forem iguais vai retornar zero. E para verificar se tem o mesmo tamanho pode usar a strlen tam1 = strlen(string1); tam2 = strlen(string2); Depois faz uma comparação com if if(tam1 == tam2){ printf(São iguais); } else printf(São diferentes);
  2. Espero estar postando no local certo, como o sistema é desenvolvido em C e acho que o problema é de lógica, achei que deveria ser aqui em programação e não na área de Linux, enfim, qualquer coisa me avisem que eu apago e coloco no local certo. Olá pessoal estou aqui recorrendo a ajuda de vocês para me auxiliarem em um trabalho da faculdade. Tenho que desenvolver um sistema cliente/escalonador/servidor em C usando protocolo UDP e TCP, entre cliente / escalonador vai ser em UDP e entre o escalonador e o servidor em TCP, na verdade essa parte toda já está pronta, os meus problemas são: 1 - Eu preciso carregar o endereço e porta do escalonador de um arquivo em txt, onde contem 10 endereços e portas, isso também já faz, só que ele não pode enviar a todos os endereços e sim apenas para o primeiro que encontra disponível e depois encerra a leitura do arquivo, só que não consigo fazer isso, já tentei no while colocar além do feof(fp) também testar se controle (que recebe o valor do envio) for igual a 0 executar, senão parar, mas aí só funciona se for na primeira porta que o escalonador estiver rodando, se for em qualquer outra ele não envia a mensagem. 2 - Do servidor para o escalonador ele envia a resposta, mas essa resposta não chega até o cliente. Ou seja, se o servidor responder (OK), no escalonador a mensagem é recebida e deveria ser repassada para o cliente, mas isso não ocorre. Espero que alguém possa me ajudar. Códido co cliente: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> pthread_attr_t * attr; pthread_t tid; void *arg; struct scheduller{ char ip[16]; unsigned int port; }; typedef struct scheduller SCHEDULLER; SCHEDULLER sch_server[10]; struct sockaddr_in scheduller; int s, i, controle, ret, opc, opc1; socklen_t sched_tam; char buf[255], ip[16], port[6], opcc[1], nome[250], cod[2]; FILE * fp; void * resposta(void *arg){ sched_tam = sizeof(scheduller); if(recvfrom(s,buf,(strlen(buf)+1),0,(struct sockaddr *)&scheduller,&sched_tam)<0) { perror("Erro ao receber a resposta"); exit(4); } } void carrega() { if ((fp=fopen("./config.dat","r+")) != NULL) { i = 0; fscanf(fp, "%s %s", &ip, &port); controle = 0; while((!feof(fp)) && (controle != 1)) { strcpy(sch_server[i].ip,ip); sch_server[i].port = htons((unsigned int) atoi(port)); scheduller.sin_family = AF_INET; scheduller.sin_addr.s_addr = inet_addr(sch_server[i].ip); scheduller.sin_port = sch_server[i].port; controle = sendto(s,buf,(strlen(buf)+1),0,(struct sockaddr *)&scheduller,sizeof(scheduller)); if(controle == 1) { ret = pthread_create(&tid, attr, resposta, arg); sleep(2); kill(ret); printf("\t\t\n\nResposta: %s\n\n", buf); break; } else { controle = 0; i++; fscanf(fp, "%s %s", &ip, &port); } } } else printf("não foi possivel se conectar ao servidor, tente mais tarde\n"); fclose(fp); } void menu_entrada() { opc1 = 0; do { system("clear"); printf("\n\t\t===============================================\n"); printf("\n\t\t\tCodigo: "); scanf("%s", &cod); printf("\n\t\t\tNome: "); scanf("%s", &nome); printf("\n\n\t\t[1] - Confirmar [2] - Limpar [3] - Menu\n\t\tOpcao: "); scanf("%i", &opc1); printf("\n\t\t===============================================\n"); if(opc1 == 1) { memcpy(buf, "{TEXTO}", sizeof(buf)); sprintf(buf, "%s %s %s", opcc, cod, nome); carrega(); } if (opc1 == 2) system("clear"); }while( opc1 != 3); } main(int argc, char ** argv) { if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket()"); exit(1); } opc = 0; do { system("clear"); printf("\n\t\t==================== Menu ====================\n"); printf("\n\t\t\t\t[1] Incluir"); printf("\n\t\t\t\t[2] Alterar"); printf("\n\t\t\t\t[3] Excluir"); printf("\n\t\t\t\t[4] Consultar"); printf("\n\t\t\t\t[5] Sair"); printf("\n\n\t\t===============================================\n"); printf("\t\tDigite a Opcao: "); scanf("%i", &opc); switch(opc) { case 1: { strcpy(opcc, "1"); menu_entrada(); break; } case 2: { strcpy(opcc, "2"); menu_entrada(); break; } case 3: { strcpy(opcc, "3"); menu_entrada(); break; } case 4: { strcpy(opcc, "4"); menu_entrada(); break; } default: { break; } } }while (opc != 5); close(s); printf("Cliente encerrado com sucesso\n"); exit(0); } E o código do escalonador: struct servidor{ char ip[16]; unsigned int port; }; typedef struct servidor SERVIDOR; SERVIDOR sch_sched[10]; FILE *fs; int s, size, sock, i; struct sockaddr_in client, scheduller, server; char buf[32], ip[16], port[6]; socklen_t socklen = sizeof(struct sockaddr_in); void servidor() { /* ************************ SERVIDOR CONEXÃO ***************************** */ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("Socket()"); } if ((fs=fopen("./server.dat","r+")) != NULL) { i = 0; fscanf(fs, "%s %s", &ip, &port); while(!feof(fs)) { strcpy(sch_sched[i].ip,ip); sch_sched[i].port = htons((unsigned int)atoi(port)); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr(sch_sched[i].ip); server.sin_port = sch_sched[i].port; if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { i++; fscanf(fs, "%s %s", &ip, &port); } } if (send(sock, buf, sizeof(buf), 0) < 0) { perror("A mensagem não pode ser enviada"); } if (recv(sock, buf, sizeof(buf), 0) < 0) { perror("Erro ao receber a resposta"); } printf("Mensagem do servidor: %s\n", buf); } else printf("não foi possivel se conectar ao servidor, tente mais tarde"); /* *********************** FIM CONEXÃO SERVIDOR ************************** */ } main(int argc, char ** argv) { while(1) { if (argc < 2) { perror("Quantidade de parametros incorreta!"); printf("\n%s [port]\n",argv[0]); } if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket()"); } scheduller.sin_family = AF_INET; scheduller.sin_port = htons(atoi(argv[1])); scheduller.sin_addr.s_addr = INADDR_ANY; if (bind(s, (struct sockaddr *)&scheduller, sizeof(scheduller)) < 0) { perror("bind()"); } if (getsockname(s, (struct sockaddr *) &scheduller, &socklen) < 0) { perror("getsockname()"); } if(recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *) &client, &socklen) <0) { perror("recvfrom()"); } printf("Protocolo: %s\n", buf); servidor(); if(sendto(s, buf, (strlen(buf)+1), 0, (struct sockaddr *) &client,sizeof(client)) <0) { perror("Erro ao enviar a resposta"); } fclose(fs); close(sock); close(s); } }
  3. Boa tarde, gostaria de saber se alguém pode me ajudar a resolver um problema, estou fazendo um trabalho da faculdade em linguagem C que precisa receber 10 letras e depois apresentar um menu onde a pessoa escolhe qual tipo de ordenação vai querer utilizar para ordenar essas letras, eu fiz o programa todo, com a funções, não sei se está certo, ele tá compilando certinho mas na execução, recebe os dados e apresenta o menu, mas após a escolha do método de ordenação ele encerra. Ahh sim, os métodos solicitados são BublleSort, Inserção Direta, Seleção Direta e QuickSort, esses modelos o professor já forneceu o algoritmo e só precisei fazer o código, mas provavelmente tem erros, enfim. Já tentei mudar algumas coisas mas continua na mesma, será que alguém poderia me explicar o que pode ser? Aqui vai o código: #include <stdio.h> #include <stdlib.h> void bubble(int conta, char* Letra); void select(int tamanho, char* Letra); void insert(int conta, char* Letra); void quicksort (int conta, char* Letra); int main (void) { char Letra[9]; int Cont, Opcao; printf("\n\n ------------------- PROGRAMA DE ORDENACAO ------------------\n\n"); for (Cont=0; Cont<=9; Cont++) { printf("Insira uma letra: "); scanf("%s", &Letra[Cont]); } printf("\n\n -------------------- LISTA não ORDENADA --------------------\n\n"); for (Cont=0; Cont<=9; Cont++) { printf("Letra: %c\n", Letra[Cont]); } printf("\n\n ------------------------------------------------------------\n\n"); do { printf("Escolha um metodo de ordenacao:\n"); printf("\nBublleSort 1"); printf("\nSelecao Direta 2"); printf("\nInsercao Direta 3"); printf("\nQuickSort 4"); printf("\n\nEntre com a opcao: "); scanf("%i", Opcao); } while(Opcao < 5); if(Opcao==1) { printf("---------------------- LISTA ORDENADA ----------------------\n\n"); bubble(9, Letra); printf("%s\n", Letra); } if(Opcao==2) { printf("---------------------- LISTA ORDENADA ----------------------\n\n"); select(9, Letra); printf("%s\n", Letra); } if(Opcao==3) { printf("---------------------- LISTA ORDENADA ----------------------\n\n"); insert(9, Letra); printf("%s\n", Letra); } if(Opcao==4) { printf("---------------------- LISTA ORDENADA ----------------------\n\n"); quicksort(9, Letra); printf("%s\n", Letra); } return 0; } void bubble(int conta, char *Letra) { int i, j; for (i=conta-1; i>0; i--) { int troca = 0; for (j=0; j<i; j++) { if (Letra[j]>Letra[j+1]) { int temp = Letra[j]; Letra[j] = Letra[j+1]; Letra[j+1] = temp; troca = 1; } if (troca == 0) return; } } } void select(int tamanho, char* Letra) { int a, b, c; int troca; char t; for(a=0; a<tamanho-1; ++a) { troca = 0; c = a; t = Letra[a]; for(b=a+1; b<tamanho; ++b) { if(Letra[b]<t) { c = b; t = Letra[b]; troca= 1; } } if(troca) { Letra[c] = Letra[a]; Letra[a] = t; } } } void insert(int conta, char* Letra) { int a, b; char t; for(a=1; a<conta; ++a) { t = Letra[a]; for(b=a-1; b>=0 && t<Letra[b]; b--) { Letra[b+1] = Letra[b]; printf("%s\n", Letra); } Letra[b+1] = t; } } void quicksort (int conta, char* Letra) { if (conta <= 1) return; else { int x = Letra[0]; int a = 1; int b = conta-1; do { while (a < conta && Letra[a] <= x) a++; while (Letra[b] > x) b--; if (a < b) { /* faz troca */ int temp = Letra[a]; Letra[a] = Letra[b]; Letra[b] = temp; a++; b--; } } while (a <= b); /* troca pivô */ Letra[0] = Letra[b]; Letra[b] = x; /* ordena sub-vetores restantes */ quicksort(b,Letra); quicksort(conta-a,&Letra[a]); } }
  4. Pronto, consegui, valeu pessoal, agora está OK. Beijos
  5. Bom passando rapidinho pra agradecer a atenção, ainda não testei o que falaram por falta de tempo mas vou fazer logo logo e aviso depois Beijos.
  6. Oi pessoal, olha eu de novo aqui, acho que não consigo pensar muito bem em PHP pois sempre que alguém me pede um sistema em PHP eu tenho problemas em resolver. Bom vamos lá. Queria saber se tem alguém para me ajudar com um sistema de busca para uma imobiliária. No site o cliente poderá escolher se ele quer pesquisar informações de imóveis por bairro ou por preço, no bairro tudo bem, coloquei um campo select no formulario com os nomes dos bairros e mando fazer a pesquisa no banco de dados. Agora na pesquisa por preço é que estou encotrando problemas, também usando um campo select eu coloquei as faixas de valores dos imóveis, assim: <table width="313" border="1" bordercolor="#000000" cellpadding="0" cellspacing="0"> <form name="comprar" method="post" action="venda_valor.php"> <tr bgcolor="#999999"> <td height="21" colspan="2" valign="top"> <div align="center"><strong>Consulte por valor:</strong></div></td> </tr> <tr> <td width="82" height="21" valign="top" bgcolor="#CCCCCC"> <div align="right">Im&oacute;vel:</div></td> <td width="231" valign="top"><select name="imovel"> <option value="0"><< Escolha o tipo de imóvel >></option> <option value="Casa">Casa</option> <option value="Apartamento">Apartamento</option> <option value="Comercial">Comercial</option> <option value="Lote">Lote</option> <option value="Chácara">Chácara</option> <option value="Sítio">Sítio</option> </select></td> </tr> <tr> <td height="21" valign="top" bgcolor="#CCCCCC"> <div align="right">Valor:</div></td> <td valign="top"> <select name="valor"> <option value="0"><< Escolha o valor do imóvel >></option> <option value="1">Até 20.000,00</option> <option value="2">De R$ 21.000,00 à R$ 40.000,00</option> <option value="3">De R$ 41.000,00 à R$ 60.000,00</option> <option value="4">De R$ 61.000,00 à R$ 80.000,00</option> <option value="5">De R$ 81.000,00 à R$ 100.000,00</option> <option value="6">Acima de R$ 101.000,00</option> </select> </td> </tr> <tr> <td height="24" colspan="2" valign="top"> <center><input type="submit" name="Submit2" value="Enviar"></center></td> </tr> </form> </table> Bom esse é o formulário onde a pessoa escolhe o tipo de imóvel e o valor. Esses dados são enviados para o arquivo venda_valor.php via POST, onde encontro problema acredito que seja na parte lógica, como fazer para ao selecionar qual faixa de valor a pessoa quer o arquivo pesquisar só os valores correspondentes no banco de dados. Exemplo: Ele seleciona o tipo de imóvel CASA e o valor DE R$ 21.000,00 à R$ 40.000,00. No banco de dados deve-se procurar por valores ==21.000,00 e =<40.000,00. Só que não sei como receber os valores do select e especificar qual faixa de valor deve ser consultado no banco. Cá está meu problema espero encontrar alguém que possa me ajudar a resolver. Abraços
  7. Marina_DC

    Função Mail ()

    Você concatenou a variável $message a variável $name, mas esqueceu de concatenar a variável $email, veja como fica: <? $to = "fjuniorwin@yahoo.com.br"; $msg = "$name\n\n"; $msg .= "$message\n\n"; $msg .= "$email"; mail($to, $subject, $msg, "From: My web site\nReply-To: $email\n"); ?> Você esqueceu do "." no terceiro $msg, que significa que está juntando aquela linha às demais já declaradas. Veja se isso funciona.
  8. Bem, vou colocar o código de um formulário de contato que também criei e tem o mesmo problema <? //Recebendo os dados do formulário $nome = $_POST["txtNome"]; $email = $_POST["txtEmail"]; $assunto = $_POST["txtAssunto"]; $mensagem = htmlentities($_POST["txtMensagem"]); $contato = "seuemail@hotmail.com"; // e-mail para onde a mensagem será enviada // Início configuração da mensagem global $email; $data = date("d/m/y"); $hora = date("H:i"); $body = "<b>Data:</b> $data | <b>Hora:</b> $hora<br>"; $body .= "<b>Assunto:</b> $assunto<br>"; $body .= "$mensagem\r\n"; $headers = "From: $nome <$email>\r\n"; $headers .= "Reply-To: $nome <$email>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //Envio da mensagem if(@mail($contato,$assunto,$body,$headers)){ echo "&lt;script>alert('Email enviado com sucesso. Obrigado')</script>"; echo "&lt;script>location.href='contato.html'</script>"; } // Mensagem de erro else{ echo "&lt;script>alert('A mensagem não pôde ser enviada, tente novamente')</script>"; echo "&lt;script>location.href='contato.html'</script>"; } ?> Procurando no código fonte do e-mail quando recebido, verifiquei que o PHP não estava reconhecendo os caracteres especiais, e em uma busca pela net descobri o htmlentities que na teoria era pra fazer a conversão, só que agora recebo o e-mail assim: Data: 14/09/07 | Hora: 13:15 Assunto: Teste <html> <head> </head> <body> <font color=\"#FF0000\" face=\"Courier New, Courier, mono\">Teste</font> <br> <img src=\"http://www.buddytv.com/articles/supernatural-born-under-a-bad-sign-00.jpg\"> </body> </html> E antes da tag <html> aparece um quadrinho cinza como se fosse o simbolo de imagem quebrada. Vou continuar na procura por uma solução, mas se alguém aqui puder me ajudar. Abraços.
  9. Já tentei isso também Eric e continua a mesma coisa, a imagem aparece quebrada. Estou começando a achar que o problema está no servidor onde hospedam a imagem, porque no código está tudo ok. Ou então seja problema com o webmail, eu testei apenas no Hotmail e Yahoo, no IG o e-mail nem mesmo chega, nos demais, chega, mas com a imagem quebrada.
  10. Oi pessoal, estou começando em PHP, sempre usei mais o ASP e estou tendo um pouco de dificuldade em desenvolver um newsletter em PHP. Preciso saber como enviar uma imagem junto com o corpo do e-mail, sem estar em anexo, colocando o comando em html <img src="http://endereco.com.br/imagem.gif"> Já descobri que pela função ()mail tem como habilitar o envio em formato html colocando nos parâmetros headers os comandos $header = "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; $header .= "Content-type: image/gif"; Nesse caso, dentro do campo textarea poderia inserir o código html juntamente com o endereço da imagem já hospedada no servidor e enviar que chegaria no e-mail. Ele envia todas as configurações do html, mas no local onde deveria ficar a imagem aparece apenas o símbolo de imagem quebrada. Não sei mais o que poderia fazer para resolver este problema. Pequisei aqui no fórum, e até mesmo em outros fóruns, mas as soluções apresentadas são sempre as mesmas, usar esses comandos acima para enviar a imagem. Alguém pode me ajudar?
×
×
  • Criar Novo...