
PIAIXX5000
(usa Red Hat)
Enviado em 27/12/2016 - 16:59h
paulo1205 escreveu:
Antes de chegar ao send(), o socket de comunicação teve de ser criado. Dependendo de como ele seja criado (orientado datagrama, a circuito, a sequenciamento de pacotes, ou mesmo em modo não processado (raw); qual a família de endereços; e eventuais parâmetros atribuídos posteriormente, que incluem bufferização e modos tardios de sinalização de erros), pode ser completamente aceitável que uma remessa funcione mesmo sem a rede estar ligada. Aliás, dependendo do destino e da configuração da máquina, você pode achar que a rede está desligada, mas aquele destino específico pode ainda constar como atingível.
Certamente precisamos de mais detalhes para poder dar uma resposta definitiva. E você poderia começar a nos dar essas informações mostrando o código do programa.
Obrigado Paulo1205
Abaixo um resumo do código:
s1 é o descritor do soquet.
if (s1 = socket(PF_INET, SOCK_STREAM, 0)) >=0) //abrir o soquet
{
sin.sin.family = PF_INET;
sin.sin.port = htons (porta1);
inet_aton (ipe, & (sin.sin.addr)); //endereço é da classe 192.168.1....
bzero (&(sin.sin_zero), 8);
tam = sizeof (struct sockaddr);
fcntl (s1, F_SETFL, O_NOMBLOCK); // socket não bloqueante
if (connect (s1, &sin , tam) >= 0) //conectou
{
if send (s1, stf, tamanho) >= 0) // enviou === aqui que não retorna -1
No codigo acima há os tratatmentos de erros.
Desde já agradeço a atenção.