Как передать информацию по локальной сети WinSock2?

103
13 июля 2021, 06:30

Есть сервер он получает данные от клиента

AmountRead = recv(ConnSock, Buffer, sizeof(Buffer), 0);

и есть клиент который отправляет данные

RetVal = send(ConnSocket, Buffer, AmountToSend, 0);

Мне нужно передать информацию, 123 которая храниться в переменной int i

Например int i = 123;

Как мне ее передать на сервер, более точнее, как мне правильно нужно написать код, в строке send и recv что бы передавать и принимать информацию с переменных.

Answer 1

Вообще смотрите что можно делать. Вот есть переменная int, её можно передать вместо write или send. Не знаю как в windows, но в линукс в параметре write и send передаётся не char, а void. void * это такой тип, что через него можно отправить что угодно. Например.

int i = 4;
send ( ConnSocket, &i, sizeof ( int ) );

Так можно передать int. Также можно передать структуру.

struct buf {
  int a;
  char m[10];
};
...
    struct buf buf;
    send ( ConnSocket, &buf, sizeof ( struct buf ) );

Так мы передаём структуру. Я например передавал структуры по сети, чтобы обмениваться сразу большими данными. ЕЩё как вариант можно сделать так.

char buffer[255];
char buffer1[255];
int *i = (int *) &buffer;
*i = 4;
struct buf *buf = (struct buffer *) &buffer1;
buf->a = 4;
send ( ConnSocket, &buffer[0], sizeof ( buffer ) );
send ( COnnSocket, &buffer1[0], sizeof ( buffer1 ) );

Здесь sizeof ( buffer ) возвращает размер массива, потому что такой массив можно вычислить. Если бы массиву было выделено в куче, то размер не подчитать так. В общем я думаю ответил на вопрос.

READ ALSO
как менять указатель на класс

как менять указатель на класс

есть 2 класса и указатель:

109
Использование content с svg

Использование content с svg

Необходимо отображать svg в блоке с определённым классомРанее никогда такого не делал

83