Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

joaobalaia

Progrmaçao em linguagem c no linux

Recommended Posts

joaobalaia

Boa tarde malta, estou com um pequeno problema que não sei bem como resolver.

Tenho de fazer um protejo para uma cadeira e a parte do código já a consegui fazer, seguindo alguns passos que foi vendo na net e nas aulas.

O meu problema é que agora para fazer o relatório final do protejo necessito de fazer a explicação das linhas de código, e como eu foi vendo na net não sei bem explicar o código em si, espero que alguém me consiga ajudar.

Vou deixar aqui o código em baixo e vou ficar a aguardar respostas.

//ficheiro: cliente.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

int ler_socket(int cliente_socket){
//while(1){
int tamanho;
if(read(cliente_socket, &tamanho, sizeof(tamanho)) == 0)
return 0;


char* mensagem = (char*) malloc(tamanho);
read(cliente_socket, mensagem, tamanho);
printf("cliente: resposta recebida do servidor--> %s\n", mensagem);


if(!strcmp(mensagem, "quit")){
free(mensagem);
return 1;
}
free(mensagem);
//}
}

void escrever_socket(int socketfd, const char* mensagem){
int tamanho = strlen(mensagem) + 1;
write(socketfd, &tamanho, sizeof(tamanho));
write(socketfd, mensagem, tamanho);
}

int main(int argc, char* argv[]){
const char* const nome_socket = argv[1];
//const char* const mensagem = argv[2];
int socket_fd;

char mensagem[50];
//scanf("%s", &mensagem);
while(1){
gets(mensagem);


if(strcmp(mensagem, "start") == 0){
socket_fd = socket(PF_LOCAL, SOCK_STREAM, 0);
struct sockaddr_un nome;
nome.sun_family = AF_LOCAL;
strcpy(nome.sun_path, nome_socket);

connect(socket_fd, (struct sockaddr*) &nome, SUN_LEN(&nome));
gets(mensagem);
while(1){
gets(mensagem);

if(strcmp(mensagem, "ig") == 0){
socket_fd = socket(PF_LOCAL, SOCK_STREAM, 0);
struct sockaddr_un nome;
nome.sun_family = AF_LOCAL;
strcpy(nome.sun_path, nome_socket);

connect(socket_fd, (struct sockaddr*) &nome, SUN_LEN(&nome));
escrever_socket(socket_fd, "informatica de gestao");


}
}

while(strcmp(mensagem, "end") != 0){
escrever_socket(socket_fd, mensagem);
ler_socket(socket_fd);
gets(mensagem);
}
close(socket_fd);
}
}
return 0;
}

 

 

 

Edited by M6
Formatação de código.

Share this post


Link to post
Share on other sites
pwseo

@joaobalaia

Se foste vendo o código pela net e aulas, então das duas uma: ou viste e tentaste compreender antes de incorporar no teu projecto, ou então simplesmente incorporaste no teu projecto sem tentares perceber como funciona (que é basicamente «copiar»). Se alguém vier agora explicar o código então chegamos a um ponto ridículo: tens um trabalho que era suposto ser feito por ti, mas cujo código foi escrito sem saberes exactamente como funciona, e cuja explicação de funcionamento foi feita por outra pessoa.

O que te proponho é o seguinte: comenta devidamente o teu código como se estivesses a explicá-lo. Se tiveres alguma dúvida, voltas cá e colocas questões concretas.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.