Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

magician

Limitar velocidade do Socket

Mensagens Recomendadas

magician    2
magician

Boas como é possivel limitar a quantidade de dados transferidos por segundo por um socket?

Por exemplo enviar um ficheiro por sockets mas limitando para que apenas sejam enviados 10kb/s...

Uma solução que imaginei seria enviar blocos de 10kb e fazer um sleep de 1 sec mas parece-me um bocado rudimentar e martelado.

Não existem uma solução testada e eficazmente valida ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

A única coisa que me ocorre é mesmo o enviar um bloco e no final de 1 seg, mandar outro. É assim que é feito o baud rate em ligações seriais p.e., não vejo o porquê de ser martelada.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

É a única maneira que conheço de o fazer.

Edit:

Mas este método pode trazer problemas, imagina que o cliente só tem 10kBps de largura de banda, se tu parares um segundo entre cada 10kB a velociade dele passa para 5kBps.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Não consigo perceber porquê.

Porquê o quê?

Mas este método pode trazer problemas, imagina que o cliente só tem 10kBps de largura de banda, se tu parares um segundo entre cada 10kB a velociade dele passa para 5kBps.

Envias byte a byte e a cada byte vê se passou 1 seg. Se não passou, fazes o sleep, caso contrário continuas.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Ele está a dizer que se o cliente consegue apenas receber 10kB por segundo, se tu fazes uma pausa de 1seg sempre que envias 10kB, o cliente vai receber 10kB no 1o segundo, 0kB no segundo, 10kB no terceiro, etc, o que dá uma média de 5kB/s.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Ele está a dizer que se o cliente consegue apenas receber 10kB por segundo, se tu fazes uma pausa de 1seg sempre que envias 10kB, o cliente vai receber 10kB no 1o segundo, 0kB no segundo, 10kB no terceiro, etc, o que dá uma média de 5kB/s.

Epá mas vai ser de 1 em 1 segundo que escreves para o buffer, não o que o cliente recebe. A velocidade que o cliente recebe não entra sequer na equação, porque vais estar a escrever 10kB de 1 em 1 segundo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Epá mas vai ser de 1 em 1 segundo que escreves para o buffer, não o que o cliente recebe. A velocidade que o cliente recebe não entra sequer na equação, porque vais estar a escrever 10kB de 1 em 1 segundo.

Tens a certeza que não é possível saber quando é que os 10kB são transmitidos?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Claro que é possível, mas o que é que se ganha com isso?

Se se quer limitar a velocidade de upload só é preciso controlar a velocidade com que se escreve pro socket, não interessa para nada a velocidade do cliente.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade