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