Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 3 / 0
Регистрация: 20.09.2009
Сообщений: 101

Приём и передача структуры

23.08.2011, 19:54. Показов 2297. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Правильно ли я принемаю и передаю структуры ?

C++
1
2
//приём
recvfrom(sServerListen,(char*)&sync, sizeof(sync),0,(struct sockaddr *)&clientaddr, &iSize)
C++
1
2
// отсылка
sendto( sServerListen,(char*)&sync,sizeof(DATA),0,(sockaddr *)&clientaddr, sizeof(clientaddr));
просто у меня что - то слишком медленно передаётся структура
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.08.2011, 19:54
Ответы с готовыми решениями:

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

Передача структуры через сокет
Привет всем. Подскажите пожалуйста, где я мок на косячить. Потому что я уже бомбить начинаю... клиент#include <sys/types.h> ...

Передача структуры по сети: send, recv
на стороне клиента привожу структуру к типу char*: DATA * PDATAClient; send( sock, (char*) PDATAClient, sizeof(DATA), 0 );send...

10
Заблокирован
23.08.2011, 19:58
Цитата Сообщение от MelKiY Посмотреть сообщение
Правильно ли я принемаю и передаю структуры ?

C++
1
2
//приём
recvfrom(sServerListen,(char*)&sync, sizeof(sync),0,(struct sockaddr *)&clientaddr, &iSize)
C++
1
2
// отсылка
sendto( sServerListen,(char*)&sync,sizeof(DATA),0,(sockaddr *)&clientaddr, sizeof(clientaddr));
просто у меня что - то слишком медленно передаётся структура
По этому коду ничего нельзя сказать, так как нет прототипа ваших функций и нет определения структур. Если это код из языка С, то у вас выйдет ошибка компиляции, так как в функции sendto вы не указали ключевое слово struct акпкд идентификатором sockaddr.
0
2 / 3 / 0
Регистрация: 20.09.2009
Сообщений: 101
23.08.2011, 20:12  [ТС]
не у меня компилируется всё прекрасно я говорю что структура очень медленно передаётся

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
struct DATA {
int Players;
char ServerName[256];
char ServerMode[256];
char PlayerList[256];
int KickID;
int KeyCode;
int PacketID;
int TimeH;
int TimeM;
int ServerWeather;
int MaxPlayers;
int OnConnect;
int OnDisconnect;
char PlayerName[256];
int ConstPlayerID;
int PreAnim;
int AnimRun1;
int X;
int Y;
int Z;
int SpeedX;
int SpeedY;
int SpeedZ;
int A;
int A2;
int A3;
int ANIM;
int HP;
int WEPID;
int WEPBYHAND;
int WEPSPAZ;
int WEPGREN;
int WEPPISTOL;
int WEPMP5;
int WEPM16;
int WEPMINI;
int WEPSNIPER;
int CARNUM;
int CX;
int CY;
int CZ;
int CSPEEDX;
int CSPEEDY;
int CSPEEDZ;
int CGARDX;
int CGARDY;
int CGARDZ;
int CLOOKX;
int CLOOKY;
int CLOOKZ;
int CWASX;
int CWASY;
int CWASZ;
int CHP;
int CCOLOR;
int CSECONDCOLOR;
int CSIREN;
int PRAM1;
int PRAM2;
int PRAM3;
int PRAM4;
int PRAM5;
int PRAM6;
int PRAM7;
int PRAM8;
int PRAM9;
int PRAM10;
}; DATA sync;
0
Заблокирован
23.08.2011, 20:17
Цитата Сообщение от MelKiY Посмотреть сообщение
не у меня компилируется всё прекрасно я говорю что структура очень медленно передаётся

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
struct DATA {
int Players;
char ServerName[256];
char ServerMode[256];
char PlayerList[256];
int KickID;
int KeyCode;
int PacketID;
int TimeH;
int TimeM;
int ServerWeather;
int MaxPlayers;
int OnConnect;
int OnDisconnect;
char PlayerName[256];
int ConstPlayerID;
int PreAnim;
int AnimRun1;
int X;
int Y;
int Z;
int SpeedX;
int SpeedY;
int SpeedZ;
int A;
int A2;
int A3;
int ANIM;
int HP;
int WEPID;
int WEPBYHAND;
int WEPSPAZ;
int WEPGREN;
int WEPPISTOL;
int WEPMP5;
int WEPM16;
int WEPMINI;
int WEPSNIPER;
int CARNUM;
int CX;
int CY;
int CZ;
int CSPEEDX;
int CSPEEDY;
int CSPEEDZ;
int CGARDX;
int CGARDY;
int CGARDZ;
int CLOOKX;
int CLOOKY;
int CLOOKZ;
int CWASX;
int CWASY;
int CWASZ;
int CHP;
int CCOLOR;
int CSECONDCOLOR;
int CSIREN;
int PRAM1;
int PRAM2;
int PRAM3;
int PRAM4;
int PRAM5;
int PRAM6;
int PRAM7;
int PRAM8;
int PRAM9;
int PRAM10;
}; DATA sync;
Если у вас код на С++, то лучше передавать структуру по ссылке. А если код на С, то лучше переписать функцию так, чтобы она получала указатель на вашу структуру.
0
2 / 3 / 0
Регистрация: 20.09.2009
Сообщений: 101
23.08.2011, 20:26  [ТС]
блин я пишу на C++

то лучше передавать структуру по ссылке
можно поподробнее ?
0
Заблокирован
23.08.2011, 20:33
Цитата Сообщение от MelKiY Посмотреть сообщение
блин я пишу на C++



можно поподробнее ?
У вас передается как раз указатель на структуру. Только непонятно, зачем вы переводите его в указатель на char *. Так что структура не должна "долго передаваться". Вы всего лишь в функцию передаете указатель на char, который занимает в стеке всего лишь 4 байта, если вы имеете джело с 32 битовой платформой.
0
2 / 3 / 0
Регистрация: 20.09.2009
Сообщений: 101
23.08.2011, 20:45  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Только непонятно, зачем вы переводите его в указатель на char *
потомучто подругому никак ...
0
Заблокирован
23.08.2011, 20:49
Цитата Сообщение от MelKiY Посмотреть сообщение
потомучто подругому никак ...
На нет и суда нет!

Но никаких задержек с передачей вашей структуры быть не должно, так как на самом деле вы структуру не передаете, а передаете лишь указатель на нее.
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
23.08.2011, 21:02
ну а как создается сокет? какие ему ставятся опции? и каков sizeof() структуры (просто влом компилить и смотреть).

И на сколько часто выполняется этот код и что, в конце-концов, значит это "медленно"?
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
23.08.2011, 22:33
Цитата Сообщение от MelKiY Посмотреть сообщение
Правильно ли я принемаю и передаю структуры ?
Всё правильно. Тут видно что работаешь по UDP, твоя структура превышает 1 кб, что не так уж и много для локальных сетей или выделенных линий, пишешь online игрушку а скорость передачи и приёма у тебя на реальном времени по кадру игры и какая скорость у тебя доступ в интернет если за сотню KB-итная то здесь в медленной скорости речи не будет. Нужно при разработке online - игрушки не посылать беспорядончо а по fps рассчитывать за ранее передачу или у тебя локально - 127.0.0.1 тормозит.
1
2 / 3 / 0
Регистрация: 20.09.2009
Сообщений: 101
24.08.2011, 01:32  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.08.2011, 01:32
Помогаю со студенческими работами здесь

Приём сырых сокетов
Отправляю сырой сокет следующим кодом, но принять никак не могу. ОС: ubuntu //Create a raw socket int s = socket...

Добавление приём массива
Здравствуйте. Модифицируйте пожалуйста код так, чтобы было видно как будто на сервер приходит одномерный массив Добавлено через 17 минут...

Отправка и приём данных
Tcp сокеты. У меня есть два массива байтов. Допустим я отправил один массив, а потом ещё один. Как они придут? Могут они прийти как...

Передача звука, приём
Доброго времени суток. Вот задумал создать, что то на подобии голосового чата, но вот нет навыков в данной сфере. Может, кто то уже...

Приём-передача файлов по Сокетам
В локальный чат с клиентским и серверным приложениями необходимо добавить функцию,обеспечивающую приём-передачу файлов между отдельными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru