Member 14825085 Ответов: 3

Как я могу получить 2d массив;


Кто-нибудь знает, как я могу отправить 2d-массив с сервера на клиент.я пробовал все, но сервер никогда не печатает мой массив.(tcp/ip). Большое спасибо

Что я уже пробовал:

Я пытаюсь сделать это:send(sock,arr, sizeof(arr), 0)
А в клиенте:recv(sock, arr, 1024,0) и затем классический двойной цикл for для его печати

Richard MacCutchan

Как массив объявляется в вашем коде? Кроме того, что получает данные, поступающие на сервер?

Member 14825085

он объявляется следующим образом: char array[30][30]

Richard MacCutchan

Просто создайте два цикла, которые идут вокруг каждого измерения, передавая внутренний набор символов на сервер каждый раз.

Member 14825085

Можете ли вы черт возьми с каким то кодом потому что я пытаюсь 1 день и просто не могу

Richard MacCutchan

Не совсем, потому что я не знаю точно, что вы пытаетесь сделать. Покажите нам код, который вы написали, и объясните, что не работает, и мы можем попытаться помочь. Но просто говорю "отправить 2d массив через сокет" на самом деле это не совсем ясно.

3 Ответов

Рейтинг:
2

Patrice T

Цитата:
Кто-нибудь знает, как я могу отправить 2d-массив с сервера на клиент.я пробовал все, но сервер никогда не печатает мой массив.(tcp/ip)

Не видя вашего фактического кода (с обеих сторон), трудно понять, что не так.
То, что вы описываете, - это цепочка задач, 1 ошибка, и она не работает. Вы достигли точки, где вам нужно отладить свой код (убедитесь, что каждая подзадача работает должным образом).

Во-первых, вам нужен сетевой сниффер, чтобы убедиться, что сервер что-то излучает, и что отправляется, и куда.
Затем вам нужно использовать отладчик, чтобы проверить, что код работает должным образом на каждом шаге.
-----
Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
-----
Кстати, знаете ли вы, что C не знает размера массивов ?
send(sock,arr, sizeof(arr), 0);


Рейтинг:
1

steveb

Вы копируете свой массив в байтовый буфер, а затем записываете этот байтовый буфер в свой открытый сокет


Рейтинг:
0

phil.o

Вы можете преобразовать его в одномерный массив, а затем отправить в виде char* array[900] вместо этого и преобразуйте его обратно в двумерный массив на клиенте.

dim1[i] = dim2[x][y];
i = 30 * x + y;
x = i / 30;
y = i % 30;