0
Я написал программу для отправки системного журнала на удаленный sever.Part моего кода ниже:, что случилось с «<>» отсутствует
sprintf(syslogBuf,"<%d>LogTime=\"%s\";user=\"%s\";IP=\"%s\";Sip=\"%s\";OpType=\"%s\";OpResult=\"%d\";OpText=\"%s %s\"",
pri,p[0],p[1],IP,p[2],p[3],flag,p[1],p[3]);
И я sendto()
послать syslogBuf
дистанционного sylog sever.But, что полученное количество:
LogTime="2015-10-20 14:33:57";user="root";IP="127.0.1.12";Sip="127.0.1.14";OpType="show meminfo";OpResult="0";OpText="root show meminfo"
Почему <%d>
отсутствует? отправляющий код ниже:
if(UdpSendData(sockfd,syslogBuf,strlen(syslogBuf),syslogServer,SYSLOGPORT) == -1);
perror("send failed");
UdpSendData:
int UdpSendData(int sockfd,const char *buf, UINT32 dataLen, char *remoteIP, int remotePort)
{
struct sockaddr_in RemoteAddr;
int len;
if(sockfd <= -1)
{
printf("%s send fail,sock error.\n",__FUNCTION__);
return -1;
}
if((buf == NULL)||(remoteIP==NULL))
{
printf("%s send fail,buf error or remote ip error.\n",__FUNCTION__);
return -1;
}
//printf("udp send remote ip %s port %d.\n",remoteIP,remotePort);
memset(&RemoteAddr,0,sizeof(RemoteAddr));
RemoteAddr.sin_family = AF_INET;
RemoteAddr.sin_port = htons(remotePort);
RemoteAddr.sin_addr.s_addr = inet_addr(remoteIP);
int addrLen = sizeof(RemoteAddr);
len = sendto(sockfd, buf, dataLen, 0, (struct sockaddr*)&RemoteAddr, addrLen);
if (len <= 0)
{
printf("%s udp send to %s %d fail.\n",__FUNCTION__,remoteIP,remotePort);
return -1;
}
return len;
}
Имеет ли 'syslogbuf' то, что вы ожидаете от _before_ вы его отправляете? –
Он содержал то, что мне нужно было отправить. Перед отправкой я напечатал его на 'stdout', и он отобразил всю информацию:' 0> –
. Появляется ли текст, если вы используете '{..}' вместо угла кронштейны? – usr2564301