pedromcosta Posted May 18, 2012 at 04:56 PM Report #456711 Posted May 18, 2012 at 04:56 PM Boas, A minha dúvida é a seguinte: estou a tentar ler informação que está a ser enviada para a porta 30145 do meu servidor e para isso estou a criar uma função para ler a informação, tratar e enviar para o mysql. O que acontece é que até ao método accept() corre tudo bem, é criado o socket, fica à escuta, o cliente liga-se e partir deste momento se fizer um telnet à porta a partir de qualquer máquina é detectado no accept, mas o meu problema está depois a tentar ler a informação. Ou seja, qual é a melhor maneira de ler o que me é enviado para a porta? int socket_desc; int addrlen; bool stop = false; struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(30145); socket_desc=socket(AF_INET,SOCK_STREAM,0); if (socket_desc==-1) perror("erro a criar socket"); int value = bind(socket_desc,(struct sockaddr *)&address,sizeof(address)); if(value==0){ printf("true\n"); }else if(value<0){ printf("erro no bind\n"); } listen(socket_desc,3); while(stop!=true){ addrlen = sizeof(struct sockaddr_in); int new_socket = accept(socket_desc, (struct sockaddr *)&address, &addrlen); if (new_socket<0) perror("erro no accept\n"); printf("New socket is %d\n",new_socket); //até aqui corre tudo bem int ret; int tmpres; char buffer[1024]; memset(buffer, 0, sizeof (buffer)); ret = recv(new_socket, buffer, sizeof(buffer), 0); if (ret<0) perror("erro a ler no socket\n"); }
HappyHippyHippo Posted May 18, 2012 at 05:01 PM Report #456714 Posted May 18, 2012 at 05:01 PM (edited) (analogia) a minha dúvida = afinal qual é o problema ???? PS : mete o código dentro das tags code para se poder ler isso Edited May 18, 2012 at 05:02 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted May 18, 2012 at 05:22 PM Report #456722 Posted May 18, 2012 at 05:22 PM ret = recv(new_socket, buffer, sizeof(buffer), 0); if (ret<0) perror("erro a ler no socket\n"); Os bytes recebidos estao no buffer ... for (k = 0; k < ret; k++) { printf("%02x ", buffer[k]); } puts(""); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
pedromcosta Posted May 18, 2012 at 08:44 PM Author Report #456757 Posted May 18, 2012 at 08:44 PM HappyHippyHippo, o problema era que não sabia mesmo como ler a informação mas pelos vistos estava a ser burro. Obrigado pmg, era mesmo isto 👍
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now