Мне нужно написать приложение Windows Sockets для работы, но я практически не имею опыта сетевого программирования. Мне нужна небольшая помощь.
Мне нужно сделать несколько функций для отправки запросов на разные данные.с сервера, давайте использовать одну из этих вещей, случайные числа, в качестве примера.
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' находится массив случайных чисел с сервера - отлично!Кроме «р» также содержит другие данные, которые являются частью входящего пакета.То, что я хотел бы для буфера, который передается, чтобы просто содержать случайные числа, когда я закончу.Если я знал структуру входящего пакета, и это было что-то вроде:
struct incomingrandnums
{
int a;
int b;
char c;
int numbers[100];
}
можно ли создать в функции char * и выделить память для первых трех членов пакета, а затем просто memcpyпереданный в буфер до конца?Возможно, не совсем так, но вы понимаете, в чем дело, результат должен состоять в том, что вызывающая функция может просто создать массив целых чисел, передать свой адрес функции, а когда это будет сделано, массив в вызывающей функции содержит только случайные числа, которыебыли в полученном пакете.Я не могу проверить это до завтрашней работы, но это было в моей голове.
Спасибо.