2012-02-26 64 views
1

創建數據包我想創建的數據這個數據包。我有4種方法可用於創建數據,然後還有一種方法將它們組合在一起發送。 我所擁有的一切工作雖然甜蜜的4種方法一個需要計算最終的數據包的總大小..但林不知道該怎麼辦,作爲包其作用,並應該是在第3位的順序數據包(方法1,2,3,4)。目標C

所以basicly我的包構造方法看起來像這樣

- (void) constructRequest 
{ 
//create data packet 
    NSMutableData * myConstructedMutableDataPacket = [[NSMutableData alloc] init]; 

//init methods to get the required data 
    NSData *protocol = [self addProtocol]; //nsdata type 
    NSData *versionNum = [self addVersionNum]; //nsdata type 
    NSData *size = [self addSize]; //nsdata type 
    NSData *requestSig = [self addRequestSig]; //nsdata type 


    [myConstructedMutableDataPacket appendData:protocol]; 
    [myConstructedMutableDataPacket appendData:versionNum]; 
    [myConstructedMutableDataPacket appendData:size]; ///but I dont have the size yet.. how do i get it? 
    [myConstructedMutableDataPacket appendData:requestSig]; 


//print to file for testing 
    [myConstructedMutableDataPacket writeToFile:@"/Users/imac/Desktop/_dataDump.dat" atomically:YES]; 

} 

,你可以看到,我不知道我的myConstructedMutableDataPacket的大小,我需要它的創建前增加大小進去......怎麼能我明白了嗎?

+1

你能不能只建立在年底另一NSData對象,現在你擁有的數據包的整個長度? – 2012-02-26 22:59:44

+0

爲什麼我最終做的就是你的建議。我創建了另一個由protocol,versionNu和requestSig組成的對象,然後將它發送給我的addsize方法(我給出了一個接受nsdata的參數..然後計算大小,然後將其添加到代表我的不同nsmutabledata對象的數據包中。 – 2012-02-27 00:06:19

+0

我將添加一個答案只是關閉的問題;) – 2012-02-27 00:29:31

回答

1

您可以創建在最後一個臨時NSData對象包括協議,versionNu和requestSig,然後發送到您的addSize方法。然後你可以重新創建你想要以正確的順序初始化的NSData對象。

+0

完美感謝在正確的方向輕推 – 2012-02-27 00:31:45

+0

不是一個問題,那就是這個網站是爲製作 – 2012-02-27 00:32:22