E
Um nicht in vergessenheit zu geraten, das ist mein Cleint Code mit der Broadcast Message, wollte mal Fragen ob das so richtig ist?
int __fastcall TForm1::UDPinit()
{
long rc;
SOCKET s;
int len;
char buf[256];
const char FAR * optval;
SOCKADDR_IN addr;
/* set up the broadcast cast address */
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_BROADCAST;
addr.sin_port = htons(67);
/* create the socket */
if((s = socket(AF_INET,SOCK_DGRAM,0)) == INVALID_SOCKET){
sprintf(buffer,"Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
Memo1->Lines->Add(buffer);
return false;
}
/* set it so it can broadcast */
if(setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char*)&optval,sizeof(int)) == SOCKET_ERROR){
return false;
}
if((rc = sendto(s,(char*)buffer,0,0,(sockaddr*)&addr,sizeof(sockaddr_in))) == SOCKET_ERROR){
sprintf(buffer,"Fehler: sendto, fehler code: %d\n",WSAGetLastError());
Memo1->Lines->Add(buffer);
return false;
}
rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
if(rc==SOCKET_ERROR){
sprintf(buffer,"Fehler: recvfrom, fehler code: %d\n",WSAGetLastError());
Memo1->Lines->Add(buffer);
return false;
}else{
sprintf(buffer,"%d Bytes empfangen!\n", rc);
Memo1->Lines->Add(buffer);
buf[rc]='\0';
sprintf("Empfangene Daten: %s\n",buf);
Memo1->Lines->Add(buffer);
}
return true;
}