!!!Qualnetアドオン ノード系 ノードポインタからインデックスを取得 int GetIndexFromNode(Node* node) { int id = node->nodeId; int index = id+1; return index; } アドレスをノードが持っているかを判定 bool ContainAddressInInterface(Node* node, NodeAddress searchAddress) { printf("contain address node[%d]\n",node->nodeId); bool returnFlag = false; for(int interfaceIndex = 0 ; interfaceIndex < node->numberInterfaces ;interfaceIndex++) { Address address; NetworkGetInterfaceInfo(node,interfaceIndex,&address,NETWORK_IPV4); if(address.interfaceAddr.ipv4 == searchAddress) { returnFlag =true; } else{} } return returnFlag; } idからノードポインタを取得 void GetNodeFromId(Node* baseNode,Node* returnNode,int nodeId) { bool containAddress = false; Node* tempNode = baseNode; //search this node //__________________________________ if(tempNode->nodeId == nodeId) { returnNode = tempNode; } else { //search prev node //__________________________________ for(tempNode = tempNode->prevNodeData; tempNode!=NULL ;tempNode = tempNode->prevNodeData) { if(tempNode->nodeId == nodeId){ returnNode = tempNode; break; } } if(containAddress == true) { //search next node //__________________________________ for(tempNode = tempNode->nextNodeData; tempNode!=NULL ;tempNode = tempNode->nextNodeData) { if(tempNode->nodeId == nodeId){ returnNode = tempNode; break; } } } } } アドレスからノードポインタを取得 void GetNodeFromAddress(Node* targetNode,Node** returnNode,NodeAddress address) { bool containAddress = false; Node* tempNode = targetNode; containAddress = ContainAddressInInterface(tempNode,address); //search this node //__________________________________ if(containAddress == true) { *returnNode = tempNode; printf("returnNode = %d\n",*returnNode); return; } //search prev node //__________________________________ for(tempNode = targetNode->prevNodeData; tempNode!=NULL ;tempNode = tempNode->prevNodeData) { containAddress = ContainAddressInInterface(tempNode,address); if(containAddress == true) { *returnNode = tempNode; printf("returnNode = %d\n",*returnNode); return ; } } //search next node //__________________________________ for(tempNode = targetNode->nextNodeData; tempNode!=NULL ;tempNode = tempNode->nextNodeData) { containAddress = ContainAddressInInterface(tempNode,address); if(containAddress == true) { *returnNode = tempNode; printf("returnNode = %d\n",*returnNode); return ; } } } サーバ側ノードが通信しているクライアントノードを取得 node,msgはサーバ側 AppTimer *timer; int client_NodeAddress; Node *client_node; timer = (AppTimer *) MESSAGE_ReturnInfo(msg); client_NodeAddress = timer->connectionId; GetNodeFromAddress(node, &client_node,client_NodeAddress);