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

magician

Limitar velocidade do Socket

Mensagens Recomendadas

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 ?


I haven’t lost my mind; it’s backed up on DVD somewhere!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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.

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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?

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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.


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação 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. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.