Hi,
ich versuche gerade eine user defined function für MySQL zu schreiben, welche mir eine UDP-NAchricht an eine bestimmte IP und Port sendet.
Beim Ausführen der Funktion über die MySQL-Kommandozeile bekomme ich keinen Fehler.
Allerdings habe ich per Paketsniffer (lokal) festgestellt, dass kein UDP-Paket erzeugt wird
Hier der Code:
Stimmt es, dass ich diese UDFs nur in C/C++ schreiben kann? Die MySQL-Referenz sprach von, mit C kompatiblen Sprachen.
Danke im Vorraus.
LuigiEd
ich versuche gerade eine user defined function für MySQL zu schreiben, welche mir eine UDP-NAchricht an eine bestimmte IP und Port sendet.
Beim Ausführen der Funktion über die MySQL-Kommandozeile bekomme ich keinen Fehler.
Allerdings habe ich per Paketsniffer (lokal) festgestellt, dass kein UDP-Paket erzeugt wird
Hier der Code:
Code:
long long UDPSend(UDF_INIT *initid, UDF_ARGS *args,
char *is_null, char *error);
my_bool UDPSend_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
void UDPSend_deinit(UDF_INIT *initid);
SOCKET sock;
unsigned long ip;
sockaddr_in addr;
long long UDPSend(UDF_INIT *initid, UDF_ARGS *args,
char *is_null, char *error){
sockaddr out_addr;
memcpy((sockaddr*)&out_addr, &addr, sizeof(addr));
int result = sendto(sock, args->args[2], sizeof(args->args[2]), 0, &out_addr, sizeof(addr));
if (result < 0){
//error= "Testfehler";
return 1;
}
return 0;
}
my_bool UDPSend_init(UDF_INIT *initid, UDF_ARGS *args, char *message){
WSADATA wsaData;
int start = WSAStartup(MAKEWORD(2,2), &wsaData);
if( start < 0){
memcpy(message, "WSAStartup ist fehlgeschlagen\0", 29);
return 1;
}
sock = socket(AF_INET, SOCK_DGRAM, 0);
memset(&addr, 0, sizeof(addr));
if( sock < 0){
memcpy(message, "Socket nicht initialisiert\0", 26);
return 1;
}
ip = inet_addr( args->args[0] );
memcpy( (char *)&addr.sin_addr, &ip, sizeof(ip));
addr.sin_family = AF_INET;
addr.sin_port = htonl((long int)args->args[1]);
return 0;
}
void UDPSend_deinit(UDF_INIT *initid){
closesocket(sock);
WSACleanup();
}
Stimmt es, dass ich diese UDFs nur in C/C++ schreiben kann? Die MySQL-Referenz sprach von, mit C kompatiblen Sprachen.
Danke im Vorraus.
LuigiEd