Jump to content

Recommended Posts

Posted

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");


	}
Posted

            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!

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
×
×
  • Create New...

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.