J2ME之家

匿名投稿 投稿指南 RSS订阅 J2ME通告:
搜索: 您的位置主页>Symbian>网络编程>

对IP地址的存取技巧

2008-8-21 00:21:37 来源:j2me之家整理 责任编辑:本站整理 【 点击: 我要投稿 [进入论坛]

[J2ME之家-Symbian网络编程]Symbian中IP地址类型为TInetAddr,它继承自TBuf8<KMaxSockAddrSize>,是普通的socket server地址类TSockAddr的特殊类。

TInetAddr的赋值采取下面的方法: TInetAddriIPAddress;
constKFirewallRuleIPAddress=10;
iIPAddress.SetAddress(
INET_ADDR(KFirewallRuleIPAddress,
KFirewallRuleIPAddress,
KFirewallRuleIPAddress,
KFirewallRuleIPAddress
)
)
开始我没有找到使用FileStream存取IP地址的方法,所以只好把IP地址声明成了TBuf类型,因为我知道TBuf的存取方法。但是后来看到TInetAddr是TBuf8的子类,想想其存取方法应该和TBuf的一样,所以经过不断的摸索找到了 准确的方法(其实不断的摸索,主要的原因是把TUint8*写成了TUint16*,导致老是无法 准确的读取IP地址)。

使用RFileWriterStream来写IP地址:
1RFsiFs;
2User::LeaveIfError(iFs.Connect());
3RFileWriteStreamwriter;
4writer.PushL();
5User::LeaveIfError(writer.Replace(iFs,KFirewallRuleFileName,EFileWrite));
6TInetlen=0;
7len=rule.iIPAddress.Length();
8writer.WriteInt32L(len);
9if(len)writer.WriteL(rule.iIPAddress.Ptr(),len);


10writer.CommitL();
11CleanupStack::PopAndDestroy();
12iFs.Close();
13
第7行获得IP地址的长度,其实本长度是固定的12个字节,不保存也可以。
第8行将其长度写入文件中。
第9行保存IP地址到文件中。

使用RFileReaderStream来读IP地址:
1RFsiFs;
2User::LeaveIfError(iFs.Connect());
3RFileWriteStreamwriter;
4writer.PushL();
5User::LeaveIfError(writer.Replace(iFs,KFirewallRuleFileName,EFileRead));
6TInetlen=0;
7len=reader.ReadInt32L();

8if(len)reader.ReadL((TUint8*)rule.iIPAddress.Ptr(),len);
9rule.iIPAddress.SetLength(len) ;
10CleanupStack::PopAndDestroy();
11iFs.Close();

Tag:技巧 地址 IP len 方法 KFirewallRuleIPAddress 存取
责任编辑:本站整理
  • 用户名: (新注册)密码: 匿名:  请文明参与讨论,禁止漫骂攻击。
    评论总数: [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部