1. 程式人生 > 實用技巧 >關於百度地圖js api的getCurrentPosition定位不準確的解決方法

關於百度地圖js api的getCurrentPosition定位不準確的解決方法

#include<sys/stat.h> #include<sys/types.h> #include<sys/socket.h> #include<errno.h> #include<unistd.h> #include<netinet/in.h> #include<limits.h> #include<netdb.h> #include<arpa/inet.h> #include<ctype.h>
bool CFileUploadFTP::SendAlarmMail(std::string file, uint32_t size, std::string recv_mail_addr)
{
	const char* szServer = "smtp.126.com";
	short nPort = 25;
	int sockfd;
	struct sockaddr_in server_addr;
	struct hostent *host;
	//取得主機IP地址
	if((host=gethostbyname(szServer))==NULL)
	{
		logn_error(5,"gethostname error: [%s]", strerror(errno));
		return false;
	}
	//建立SOCKET連線
	if((sockfd=socket(AF_INET,SOCK_STREAM,0)) == -1)
	{
		logn_error(5,"Socket Error:[%s]>", strerror(errno));
		return false;
	}
	// 客戶程式填充服務端的資訊
	bzero(&server_addr,sizeof(server_addr));
	server_addr.sin_family=AF_INET;
	server_addr.sin_port=htons(nPort);
	server_addr.sin_addr=*((struct in_addr *)host->h_addr);
	//客戶程式發起連線請求
	if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
	{
		logn_error(5,"Connect Error:[%s]>", strerror(errno));
		return false;
	}

	char szBuf[1024] = {0};
	char buf[256] = {0};
	char server[256] = {0};
	gethostname(server,256);
	strcpy(buf, "HELO ");
	strcat(buf, szServer);
	strcat(buf, " \r\n");
	// Wait for a reply
	recv(sockfd,szBuf,sizeof(szBuf)+1,0); 
	send(sockfd, buf, strlen(buf), 0);

	recv(sockfd, szBuf, sizeof(szBuf), 0); 
	//傳送準備登陸資訊
	send(sockfd, "AUTH LOGIN\r\n", strlen("AUTH LOGIN\r\n"), 0);
	recv(sockfd, szBuf, sizeof(szBuf), 0); 
	//傳送使用者名稱和密碼,必須用base64進行轉碼,對於126郵箱來說使用者名稱是@前面的字串
	send(sockfd,"轉碼後的使用者名稱\r\n", strlen("轉碼後的密碼\r\n"),0); 
	recv(sockfd, szBuf, sizeof(szBuf),0);
	send(sockfd,"WnlqXzIxNjU5Mw==\r\n", strlen("WnlqXzIxNjU5Mw==\r\n"), 0); 
	recv(sockfd, szBuf, sizeof(szBuf),0); 
	logn_info(5,"\nrecv login rerurn info:%s", szBuf);
	//傳送[傳送郵件]的郵箱,該郵箱要與使用者名稱一致,否則傳送不成功
	send(sockfd,"MAIL FROM: <[email protected]>\r\n",strlen("MAIL FROM: <[email protected]>\r\n"),0);
	recv(sockfd, szBuf, sizeof(szBuf), 0);
	//傳送[接收郵件]的郵箱
	char dat_buf[1024] = {0};
	sprintf(dat_buf, "RCPT TO: <%s>\r\n", recv_mail_addr.c_str());
	send(sockfd,dat_buf,strlen(dat_buf),0);
	recv(sockfd, szBuf, sizeof(szBuf), 0); 
	//傳送主題  
	//char mail_data[1024] = {0}; 
	sprintf(dat_buf, "From: \"xxxx.126.com\"<[email protected]>\r\nTo: %s\r\nSubject:file:[%s],size:[%d]\r\n", \
	        recv_mail_addr.c_str(), file.substr(12).c_str(), size);
        //告訴郵件伺服器,準備傳送郵件內容
	send(sockfd,"DATA\r\n", strlen("DATA\r\n"),0);
	//傳送郵件標題
	send(sockfd,dat_buf, strlen(dat_buf),0);
	//傳送郵件內容
	//send(sockfd,"hello 126\r\n", strlen("hello 126\r\n"),0);
	//傳送郵件結束
	send(sockfd,"\r\n.\r\n", strlen("\r\n.\r\n"),0);
	//接收郵件伺服器返回資訊
	recv(sockfd,szBuf,sizeof(szBuf),0);  
	//傳送結束會話標識
	send(sockfd,"QUIT\r\n", strlen("QUIT\r\n"),0);
	recv(sockfd,szBuf,sizeof(szBuf),0);  
	logn_info(5,"Data received QUIT: %s", szBuf);
	close(sockfd);

	return true;
}

  

呼叫方法:SendAlarmMail("/opt/dis/v1/work/personnel/150627B0016000200024_RYFZ_20210119171951.TXT", 1024000, "xxxx.163.com");