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
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)