c++实现SysLogServer发送端

//服务器端口号为161
#define DEFAULT_PORT 161
//缓冲区长度
#define DATA_BUFFER  1024
void CMServerDlg::sendUdp()
{
	WSADATA wsaData;
	SOCKET sClient;
	int iPort=DEFAULT_PORT;
	//服务器地址长度
	int iLen;
	//接收数据的缓冲
	int iSend;
	int   iRecv;
	//要发送给服务器的信息
	CString sysLog;
	sysLog.Format("<12>%s 127.0.0.1 mserver 测试",DateFormat());
	//接收数据的缓冲区
	char recv_buf[DATA_BUFFER];
	//服务器端地址
	struct sockaddr_in ser;
	memset(recv_buf,0,sizeof(recv_buf));
	if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
	{
	  printf("Failed to load Winsock.\n");
	  return;
	}
	//建立服务器端地址
	ser.sin_family=AF_INET;
	ser.sin_port=htons(iPort);
	ser.sin_addr.s_addr=inet_addr("127.0.0.1");
	//建立客户端数据报套接口
	sClient=socket(AF_INET,SOCK_DGRAM,0);
	if(sClient==INVALID_SOCKET)
	{
	  printf("socket()Failed:%d\n",WSAGetLastError());
	  return;
	}   
	iLen=sizeof(ser);
	//向服务器发送数据   
	iSend=sendto(sClient,sysLog,sizeof(sysLog),0,(struct sockaddr*)&ser,iLen);
	if(iSend==SOCKET_ERROR)
	{
		   printf("sendto()Failed:%d\n",WSAGetLastError());
		   return;
	}
	else if(iSend==0)
			   return;
			   else
			   printf("sendto()succeeded.\n");
}
CString CMServerDlg::DateFormat()
{
	//获取gmt时间
	CString szGmtTime;
	time_t rawTime;  
	struct tm* timeInfo;  
	char szTemp[30]={0};  
	time(&rawTime);  
	timeInfo = gmtime(&rawTime);  
	strftime(szTemp,sizeof(szTemp),"%a, %d %b %Y %H:%M:%S GMT",timeInfo);
	szGmtTime =szTemp;
	int npos =szGmtTime.Find(",");
	szGmtTime =szGmtTime.Right(szGmtTime.GetLength()-npos-2);
	npos =szGmtTime.Find("GMT");
	szGmtTime =szGmtTime.Left(npos-1);
	return szGmtTime;
}


版权声明:本文为qq_32008381原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。