2015-10-20 7 views
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; 

}

+0

Имеет ли 'syslogbuf' то, что вы ожидаете от _before_ вы его отправляете? –

+0

Он содержал то, что мне нужно было отправить. Перед отправкой я напечатал его на 'stdout', и он отобразил всю информацию:' 0> –

+0

. Появляется ли текст, если вы используете '{..}' вместо угла кронштейны? – usr2564301

ответ

1
<%d> 

Направляется, но системный журнал интерпретирует это как метки приоритета, а затем часть сообщения. Вместо этого вы можете использовать [%d] или (%d).