Ir para conteúdo
Fórum Script Brasil
  • 0

O Que retorna o método Socket.SendText?


Diego de Souza Silva

Pergunta

Boom dia :rolleyes:,

Eu tenho algumas dúvidas sobre o método Socket.SendText, (socket = uma instância da classe TCustomWinSocket):

1 - Quando ele retorna 0 eu já entendi que não houve problemas e a mensagem foi enviada, mas se o método retorna algum número inteiro, o que isso significa? O que o inteiro significa, quantidade de bytes quie não foram enviados ou algo assim?

2 - Existe um máximo de bytes que podem ser enviador pelo método sendText? Ele envia tudo de uma vez ou divide em pedaços numa Thread (como o SendBuf) ?

3 - Caso tenha dado algum problema ao enviar, e o problema for que o máximo permitido foi ultrapassado, como faço pra enviar o restante?

Editado por Diego de Souza Silva
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Se mais alguém puder dar um parecer ou corrigir-me, por favor manifeste-se, porque não tenho domínio sobre esta classe. :blush:

1 - Quando ele retorna 0 eu já entendi que não houve problemas e a mensagem foi enviada, mas se o método retorna algum número inteiro, o que isso significa? O que o inteiro significa, quantidade de bytes quie não foram enviados ou algo assim?
Diego de Souza Silva, a que versão do Delphi você está se referindo?

No caso do Delphi 7, o que você cita não procede! Veja o que diz o help:

"SendText returns the number of bytes sent. Note that this may be less than the length of the string S if the socket is nonblocking."

ou seja, ele retorna a quantidade de bytes enviados - conforme modo de operação do socket.

Na questão citada no help, sobre nonblocking, é conveniente observar o que é explicado para a propriedade ClientType (TClientWinSocket) e ServerType (TServerWinSocket)

Voce fez referência a TCustomWinSocket, mas é interessante lembrar que esta é a classe base de outras duas classe as quais provavelmente você cria as instâncias: TClientWinSocket e TServerWinSocket.

2 - Existe um máximo de bytes que podem ser enviador pelo método sendText? Ele envia tudo de uma vez ou divide em pedaços numa Thread (como o SendBuf) ?
Se você observar no help, o parâmetro esperado é do tipo AnsiString e, também consultando o help, você deve observar que este tipo de dado está limitado a 2GB (bastante coisa).

Quanto a enviar em pedaços ou fracionado, acredito que esteja associado a opção de operação do seu socket

3 - Caso tenha dado algum problema ao enviar, e o problema for que o máximo permitido foi ultrapassado, como faço pra enviar o restante?
se houver algum problema ao enviar, o mesmo help sobre SendText diz:

"If an error occurs while writing to the connection, SendText terminates the connection and raises an ESocketError exception."

ou seja, ocorrerá um exception - não é um número que representará isto.

Mas, supondo esta possibilidade citada, o correto é que você saiba disto antes de enviar e então faça o fracionamento da informação. Mesmo assim, isto pode ser visto de forma diferente se levarmos em conta como você definiu a propriedade ClientType/ServerType já citadas.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...