PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Envio de pacotes UDP #62090

18/02/2009

0

Galera,

Estou com um problema em um programa cliente que envia pacotes UDP.
O programa é simples, fiz ele em C e agora estou rodando em C++ Builder 2006.

Tenho uma rede UDP em tal iP e tal porta e preciso enviar pacotes UDP de forma normal e em broadcast.

O cliente esta enviando pacotes normais para um servidorzinho que implementamos e rodamos localmente e em outra maquina....porem não envia pra esse IP que precisa.

Pode ser que devido ao esquema do broadcast.


Codigo esta mto simples.


Minha duvida é na funcao setsockopt que eu nao consigo acertar na sintaxe.

Pra envio broadcast, é necessario usa-la, correto?

WSADATA wsaData;
SOCKET SendSocket;
sockaddr_in RecvAddr;
u_short iPort = 5001;
char SendBuf[1024];
// int BufLen = 1024;
int envio;
unsigned char Buff[128];
const int opcao= 1;

//---------------------------------------------
// Inicializa Winsock
WSAStartup(MAKEWORD(1,1), &wsaData);

if(( SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
{
ShowMessage(´Erro ao criar o socket!´);
}

=>>setsockopt(SendSocket,SOL_SOCKET,SO_BROADCAST,&opcao,sizeof(opcao));

RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(iPort);
RecvAddr.sin_addr.s_addr = inet_addr(´192.168.0.33´);

// estou enviando uma mensagem no formato Hexadecimal

Buff[0]= 0xCA;
Buff[1]= 0x00;
Buff[2]= 0x01;
Buff[3]= 0x03;
Buff[4]= 0x10;
Buff[5]= 0x04;
Buff[6]= 0x03;
Buff[7]= 0x03;
Buff[8]= 0x02;
Buff[9]= 0xFF;
Buff[10]= 0xCA;


envio = sendto(SendSocket,Buff,11,0,(SOCKADDR *) &RecvAddr,sizeof(RecvAddr));

closesocket(SendSocket);

WSACleanup();
}


Localmente funciona normal... só nao envia pra rede.
Aguardo!

valeu galera


Engtovo

Engtovo

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar