Send syslog to remote server via UDP packet, below is sample code:
int sock = -1;
int port = 514;struct sockaddr_in addr;
char szLog[1024+1];
char szPri[32];
char szTimeStamp[64];
char szHostName[32];
char szServer[32];
unsigned char szRecv[1024];
struct sockaddr src_addr;
socklen_t socketLen = sizeof(src_addr);
int len = 0;
printf("In func: %s(), just for test .....\n", __FUNCTION__);
sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock < 0)
{
printf("In func: %s(), open socket fail .....\n", __FUNCTION__);
return 1;
}
memset(szPri, 0, sizeof(szPri));
strcpy(szPri, "<165>");// local use 20 + 5 notice
memset(szTimeStamp, 0, sizeof(szTimeStamp));
strcpy(szTimeStamp, "Feb 1 17:15:30");
memset(szHostName, 0, sizeof(szHostName));
strcpy(szHostName, "192.168.0.39");
memset(szServer, 0, sizeof(szServer));
strcpy(szServer, "192.168.2.112");
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(szServer);
addr.sin_port = htons(port);
memset(szLog, 0, sizeof(szLog));
snprintf(szLog, sizeof(szLog), "%s%s %s main: just test syslog 111", szPri, szTimeStamp, szHostName);
printf("In func: %s(), szLog1 = %s\n", __FUNCTION__, szLog);
sendto(sock, szLog, strlen(szLog), 0, (struct sockaddr*)&addr, sizeof(addr));
memset(szLog, 0, sizeof(szLog));
snprintf(szLog, sizeof(szLog), "%s%s %s main: just test syslog 222", szPri, szTimeStamp, szHostName);
printf("In func: %s(), szLog2 = %s\n", __FUNCTION__, szLog);
sendto(sock, szLog, strlen(szLog), 0, (struct sockaddr*)&addr, sizeof(addr));
memset(szLog, 0, sizeof(szLog));
snprintf(szLog, sizeof(szLog), "%s%s %s main: just test syslog 333", szPri, szTimeStamp, szHostName);
printf("In func: %s(), szLog3 = %s\n", __FUNCTION__, szLog);
sendto(sock, szLog, strlen(szLog), 0, (struct sockaddr*)&addr, sizeof(addr));