You Are Here:

Community: Wiki

This page was last modified on 20 May 2009, at 19:56.

Getting the host address in Symbian C++

From Forum Nokia Wiki

The below code demonstrates retrieving of the host address in Symbian C++.

Library needed:

LIBRARY  esock.lib euser.lib insock.lib

Headers

#define MAX_IP_ADDR_LEN  16
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <in_sock.h>

Getting Host address

/*
* ret buf :- on return contains the Host Address
* ret TInt :- Error codes KErrNone if success system wide error codes
*/

 
TInt GetHostAddress(char *buf)
{
RSocketServ iSocketServer;
RSocket iSockClient;
TRequestStatus iStatus;
TBuf<(MAX_IP_ADDR_LEN)> buffer;
TBuf8<(MAX_IP_ADDR_LEN*2)> buf_8bit;
char ip_addr_l[MAX_IP_ADDR_LEN];
TRequestStatus protostartStatus;
TBool ip_found_l = EFalse;
TInt Err;
 
 
Err = iSocketServer.Connect();
if (Err != KErrNone)
{
return (Err);
}
 
iSocketServer.StartProtocol(KAfInet,KSockStream,KProtocolInetTcp,protostartStatus);
User::WaitForRequest(protostartStatus);
 
if (protostartStatus.Int()!=KErrNone)
{
iSocketServer.Close();
return (protostartStatus.Int());
}
 
Err = iSockClient.Open(iSocketServer,KAfInet,KSockStream,KProtocolInetTcp);
if (Err != KErrNone)
{
 
iSocketServer.Close();
return (Err);
}
 
TSoInetInterfaceInfo* inf = new TSoInetInterfaceInfo;
 
if(inf ==NULL)
{
 
iSockClient.Close();
iSocketServer.Close();
return KErrNoMemory;
}
 
TPckg<TSoInetInterfaceInfo> opt(*inf);
 
/* Set SocketOption For enumerating interfaces */
Err = iSockClient.SetOpt(KSoInetEnumInterfaces, KSolInetIfCtrl);
 
if (Err != KErrNone)
{
iSockClient.Close();
iSocketServer.Close();
delete inf;
return Err;
}
 
/* Start Enumerating the Interfaces */
while (iSockClient.GetOpt(KSoInetNextInterface, KSolInetIfCtrl,opt) == KErrNone)
{
 
inf->iAddress.Output(buffer);
 
buf_8bit.Copy(buffer);
memset(ip_addr_l, 0, MAX_IP_ADDR_LEN);
strcpy(ip_addr_l, (char *)buf_8bit.PtrZ());
 
if (inf->iAddress.IsUnspecified())
{
// Display UnSpecified
}
else if (inf->iAddress.IsLoopback())
{
// display LoopBack
}
else if(inf->iAddress.IsLinkLocal())
{
// Display LinkLocal address
}
else
{
 
strcpy(buf, ip_addr_l);
 
ip_found_l = ETRUE;
break;
}
}//end of while
 
/* Free the resources */
iSockClient.Close();
iSocketServer.Close();
delete inf;
 
if (ip_found_l == ETRUE)
{
return KErrNone;
}
else
{
return KErrNotFound;
}
 
 
 
}

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fJ2ME45E5fE52SSE5fParserE5fwithE5fKE58mlX qdcZpublisherQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fidE2fc764fd1cE2d8b06E2d499aE2d9a6aE2d17c3903d5a65E2fforumE5fnokiaE5fcrawlerE5fagentX qdcZtitleQSxJ2ME45E20E52SSE20ParserE20withE20KE58mlE20E2dE20ForumE20NokiaE20WikiX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qrssZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qfnZdistributionQUxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2fX qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZupdatedQDx2008E2d10E2d02X qmarsZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ