0
我需要編寫一個用於工作的windows套接字應用程序,但實際上沒有網絡編程經驗,我需要一點幫助。爲recv部分分配緩衝區
我需要製作幾個函數來向服務器發出不同的數據請求,讓我們以這些東西之一,隨機數爲例。
DWORD GetRandomNumbers(int amount, int* buffer, int bufferSize);
所述方法返回表示任一成功或錯誤消息的DWORD,並且必須從調用函數中的緩衝器,該緩衝器可以調用它像這樣:
int numbers[10];
GetRandomNumbers(10,numbers,10);
在函數內部:
//set up packet containing request
//send the packet
//then call recv
recv(m_socket, (char*)buffer, bufferSize, 0);
//now cast the char array to a struct defining the incoming message packet
RandNumPacketIn* p = (RandNumPacketIn*)buffer;
好的。現在在'p'內是一組來自服務器的隨機數 - 非常棒!除'p'外還包含其他數據,這些數據是傳入數據包的一部分。我想要的是當我完成時傳入的緩衝區只包含隨機數。如果我知道傳入數據包的結構,它是這樣的:
struct incomingrandnums
{
int a;
int b;
char c;
int numbers[100];
}
是有可能的函數來創建一個char *和數據包中的前三個成員分配內存,那麼就memcpy的傳遞在緩衝區結束?也許不完全是這樣,但你得到我的漂移,結果應該是調用函數可以創建一個int數組,將它的地址傳遞給函數,當調用函數中的數組只包含隨機數在收到的數據包中。我不能在明天工作之前對此進行測試,但這一直是我的想法。
謝謝。
乾杯雷米,有道理。這可能會破壞用戶提供緩衝區的目的,儘管我們正在分配幾乎兩倍的空間,但函數會創建一個結構實例,調用函數會創建一個大型數組。也許我最好只是返回一個指向數據的指針。謝謝。 – 2012-02-22 08:35:48