【发布时间】:2012-02-21 21:03:13
【问题描述】:
我需要为工作编写一个 Windows 套接字应用程序,但我几乎没有网络编程经验,需要一点帮助。
我需要创建几个函数来从服务器请求不同的数据,让我们使用其中之一,随机数作为示例。
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 到最后?也许不完全一样,但你明白我的意思,结果应该是调用函数可以创建一个整数数组,将它的地址传递给函数,当它完成时,调用函数中的数组只包含随机数在收到的数据包中。明天上班之前我无法对此进行测试,但我一直在考虑。
谢谢。
【问题讨论】:
标签: windows sockets network-programming winsock winsock2