Форум программистов
 

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

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2013, 20:09   #1
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
Вопрос Передать данные int с помощью сокета

Здравствуйте.

Подскажите пожалуйста как с помощью сокета нужно передавать данные имеющие тип не char. Передавал массив данных с типом char и все передавались нормально, а вот как например отправить массив с типом int?

Так передаю
result=SDLNet_TCP_Send(sock, serverData, serverLength);

Так принимаю
len=SDLNet_TCP_Recv(client, serverData, 400);

Спасибо за внимание.

Последний раз редактировалось gunsoy; 05.11.2013 в 20:12.
gunsoy вне форума Ответить с цитированием
Старый 05.11.2013, 20:44   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

int var = 123;
SDLNet_TCP_Send(sock, (char*) &var, sizeof(var));

Довольно примитивно и платформенно-зависимо, но работать будет.
waleri вне форума Ответить с цитированием
Старый 05.11.2013, 21:37   #3
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Спасибо за помощь.

Правильно я понял что получать данные нужно так
len=SDLNet_TCP_Recv(client, (char *) &serverData,400);

Почему-то получаю такие данные
1) 1077936128
2) 1107820544

А отправил я
1) 3
2) 34

И что значит платформенно-зависимо? На каких ОС не будет работать?
gunsoy вне форума Ответить с цитированием
Старый 05.11.2013, 22:26   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Сколько передали, столько и должны получить... Отправляете int а почему-то читаете serverData.

Работать будет на всех OS, только одни процессоры little endian, другие big endian - порядок байт в int на разных процессорах может быть разным.

Вот, почитайте на досуге: http://ru.wikipedia.org/wiki/%D0%9F%...82%D0%BE%D0%B2
waleri вне форума Ответить с цитированием
Старый 06.11.2013, 18:03   #5
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

serverData это массив из int

int serverData[400];
len=SDLNet_TCP_Recv(client, (char *) &serverData,400);


waleri
Вот, почитайте на досуге


Спасибо за ссылку не знал этого=(
Есть ли какой-нибудь кроссплатформенный способ решения этой проблемы?
gunsoy вне форума Ответить с цитированием
Старый 06.11.2013, 18:27   #6
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Нашел то что нужно для биг литле эндиан
gunsoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить из MySQL данные типа int, double и др. Mackey_ C/C++ Базы данных 7 05.04.2013 09:27
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
Передать данные в интернет CKorpion Работа с сетью в Delphi 3 07.08.2010 12:38
Как проверить полученны/переданны ли данные от сокета? zotox Помощь студентам 2 17.08.2009 22:29
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08