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();

RSS订阅