Exemplo n.º 1
0
void ASControl::readLocalConfig()
{
	_LINE_ITEMS* pitems=itemsptr();
	char* itemstr;
	char* lstr;
	int i,totalline,find;
	union ipu eth_ip;
	printf("..reading AS config file\n");
	totalline = readCfgItems(CFG_FILE_PATH);
	eth_ip.ip = getlocalhostip(BOARD_ETH);
	sprintf(_localcfg.local_ip,"%u.%u.%u.%u",eth_ip.ipchar[0],eth_ip.ipchar[1],eth_ip.ipchar[2],eth_ip.ipchar[3]);
	printf("local board ip:%s\n",_localcfg.local_ip);
	//通过本地IP 来读取本机配置
	find=0;
	for (i=0;i<=totalline;i++) {
		itemstr = pitems[i].item[IP_POS].content;
		if (!strcmp(itemstr,_localcfg.local_ip)) {
			itemstr = pitems[i].item[AS_POS].content;
			if (!strcmp(itemstr,ACTIVE_BOARD)) {
				printf("local board config:AS_ACTIVE\n");
				_localcfg.local_as=AS_ACTIVE; 
			}
			else {
				printf("local board config:AS_STANDBY\n");
				_localcfg.local_as=AS_STANDBY; 
			}
			find=1;
			break;
		}
	}
	if (!find) {
		printf("ERROR WARNING:can't find item[%s],pls check cfg file\n", _localcfg.local_ip);
		exit(0);
	}
	//通过active/standby获取对端机器IP
	if (AS_ACTIVE == reverseCfg(_localcfg.local_as)) {
		lstr=ACTIVE_BOARD;
	}
	else {
		lstr=STANDBY_BOARD;
	}
	find=0;
	for (i=0;i<=totalline;i++) {
		itemstr = pitems[i].item[AS_POS].content;
		if (!strcmp(itemstr,lstr)) {
			strcpy(_localcfg.peer_ip,pitems[i].item[IP_POS].content);
			find=1;
			break;
		}
	}
	if (!find) {
		printf("ERROR WARNING:can't find item[%s],pls check cfg file\n",lstr);
		exit(0);
	}
}
Exemplo n.º 2
0
/*server apply socket and bind*/
int ServerPrepare(char * ServerId)
{
    char ip[50] ="\0";
    socklen_t len;
    struct sockaddr_in raddr;
    struct epoll_event event;
    getlocalhostip();
    printf("ip is %s\n",ipptr);
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr =  inet_addr(ipptr);      //set ip
    server_addr.sin_port = htons(0);                 //set port
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        fprintf(stderr, "socket error:%s\n\a", strerror(errno));
        exit(1);
    }
    epollfd = epoll_create(MAX_CONNECT);
    SetNonBlocking(sockfd);
    event.data.fd = sockfd;
    event.events = EPOLLIN | EPOLLRDHUP;
    epoll_ctl(epollfd,EPOLL_CTL_ADD,sockfd,&event);
    if(bind(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)
    {
        fprintf(stderr, "bind error:%s\n\a", strerror(errno));
        close(sockfd); 
        exit(1);
    } 
    len=sizeof(raddr);
    if(getsockname(sockfd,(struct sockaddr *)&raddr,&len)<0)
    {
	printf("getsockname failed!\n");
	return -1;
    }
    strcpy(ip,inet_ntoa(raddr.sin_addr));
    //printf("ip is %s,port is %d\n",ip,ntohs(raddr.sin_port));
    sprintf(ports,"%d",ntohs(raddr.sin_port));
    //printf("ports is %s\n",ports);
    ServerInfo(ServerId,ip,ports);
    if(listen(sockfd,MAX_CONNECT_QUEUE) == -1) 
    {
        fprintf(stderr, "listen error:%s\n\a", strerror(errno));
        exit(1);
    }
    return 0;
}
Exemplo n.º 3
0
int main()
{
    char ip[50] ="\0";
	int sockfd;
    struct in_addr in;
	socklen_t len;
	struct sockaddr_in addr, raddr;
	sockfd=socket(AF_INET,SOCK_STREAM,0);
	if(sockfd<0)
	{
		printf("create socket failed!\n");
		return -1;
	}
	addr.sin_family=AF_INET;
	addr.sin_port=htons(0);
	getlocalhostip();
	printf("ip is %s\n",ipptr);
	addr.sin_addr.s_addr=inet_addr(ipptr);
	if(bind(sockfd,(struct sockaddr *)&addr,sizeof(addr))<0)
	{
		printf("bind socket failed!\n");
		return -2;
	}
	len=sizeof(raddr);
	if(getsockname(sockfd,(struct sockaddr *)&raddr,&len)<0)
	{
		printf("getsockname failed!\n");
		return -3;
	}
    //in.s_addr = ntohl(raddr.sin_addr.s_addr);
    strcpy(ip,inet_ntoa(raddr.sin_addr));
    printf("------------------------------------------\n");
    printf("ip is %s,port is %d\n",ip,ntohs(raddr.sin_port));
    sprintf(sPort,"%d",ntohs(raddr.sin_port));
    printf("sPort is %s\n",sPort);
	return 0;
}
Exemplo n.º 4
0
int main(int argc, char **argv){
 union ipu iptest;
 iptest.ip = getlocalhostip(); 
 return 0;
}