Pergunta

Eu fiz esta pergunta anterior aqui:

TCP dois lados tentando se conectar simultaneamente

Eu tentei o método fornecido na solução e, enquanto enviava enquanto usava o NetCat e os pacotes de fungamento com etéreo, observei que, quando enviei uma string "Hello" de um lado para o outro, ele foi enviado em um segmento com o sinalizador de push.

Quem decide definir a bandeira push? Quais são as regras para definir o sinalizador push ou urgente em um segmento TCP? É possível fazer isso usando a API de soquetes?

Foi útil?

Solução

A bandeira de push é usada pela pilha TCP para dizer basicamente "estou pronto para agora". Está apenas indicando que o segmento de dados é totalmente transmitido pela fonte.

Não há como indicá -lo ou controlá -lo no Userland (sua API de soquete), pois essa é apenas a pilha/implementação do TCP para fazê -lo. Como a bandeira urgente.

(Fonte: Richard Stevens - TCP/IP ilustrado vol 1, capítulo 20)

Outras dicas

Você pode definir a bandeira urgente usando send() com o MSG_OOB Conjunto de bandeira. Como isso implica, os dados enviados estarão fora da banda, o que significa que normalmente não serão recebidos pelo lado de chamada simplesmente chamando read(). O lado receptor receberá alguma indicação de dados de OOB, como o sinal SIGURG, ou o soquete se tornará excepcional e pode ser verificado como tal usando select().

Na maioria das vezes, você não deseja definir a bandeira urgente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top