У меня есть проблемы для реализации безопасной передачи данных с сервера в клиентское приложение.
Проблема заключается в том, что данные на стороне сервера выглядят хорошо, но на стороне клиента строки данных смещаются. 0; 436128
0; 436105
1; 436080
2; 436054
3; 436027
4; 435999
5; 435969
6; 435939
7; 435906
8; 435873
9; 435838
10; 435801
11; 435763
12; 435723
13; 435681
14; 435637
15; 435592
16; 435544
17; 435495
18; 435443
19; 435389
20; 435333
< /code>
Вывод клиентской строки после recv (): < /p>
0; 436128
0; 436105
1; 436080
2; 436054
3; 436027
4; 435999
5; 435969
6; 435939
7; 435906
8; 435873
9; 435838
0; 435801
; 435763
435723
435681
14; 435637
15; 435592
16; 435544
17; 435495
18; 435443
19; 435389
20; 435333
Я попытался использовать функции read ()/write (), но у меня есть одинаковые проблемы.
Могу ли я использовать некоторые флаги в функциях send ()/recv () для решения этого? for ( idx=0; idx
Вот что я делаю на стороне клиента: < /p>
for( idx =0; idx < 1024; idx++) {
recv(client_fd, buffer, sizeof(buffer) - 1, 0);
strcpy( &str_line[0], &buffer[0]);
puts(str_line);
}
< /code>
Вот код для функций FormatxData и FormatyData: < /p>
#define DIGIT8 (int)100000000
#define DIGIT7 (int)10000000
#define DIGIT6 (int)1000000
#define DIGIT5 (int)100000
#define DIGIT4 (int)10000
#define DIGIT3 (int)1000
#define DIGIT2 (int)100
#define DIGIT1 (int)10
#define DIGIT0 (int)0
/// @brief fill string with spaces
/// @param num
/// @param str
void formatXData( int num, char* str ) {
char temp_str[16];
if ( num < DIGIT1 ) {
sprintf( temp_str," %d",num);
} else if ( num < DIGIT2) {
sprintf( temp_str," %d",num);
} else if ( num < DIGIT3) {
sprintf( temp_str," %d",num);
} else {
sprintf( temp_str,"%d",num);
}
strcpy( str, &temp_str[0] );
}
/// @brief fill string with spaces
/// @param num
/// @param str
static void formatYData( int num, char* str ) {
char temp_str[16];
if ( (num < DIGIT8) && (num >= DIGIT7) ) {
sprintf( temp_str,"%d",num);
} else if ( (num < DIGIT7) && (num >= DIGIT6) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT6) && (num >= DIGIT5) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT5) && (num >= DIGIT4) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT4) && (num >= DIGIT3) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT3) && (num >= DIGIT2) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT2) && (num >= DIGIT1) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT1) && (num >= DIGIT0) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT0) && (num >= (-DIGIT1)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT1)) && (num >= (-DIGIT2)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT2)) && (num >= (-DIGIT3)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT3)) && (num >= (-DIGIT4)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT4)) && (num >= (-DIGIT5)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT5)) && (num >= (-DIGIT6)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT6)) && (num >= (-DIGIT7)) ) {
sprintf( temp_str,"%d",num);
} else if( (num < (-DIGIT7)) && (num >= (-DIGIT8)) ) {
sprintf( temp_str,"%d",num);
}
strcpy( str, &temp_str[0] );
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... munication
C Программирование Linux: Safe Server To Client, Send () -> Recv () Communication? ⇐ Linux
1756390258
Anonymous
У меня есть проблемы для реализации безопасной передачи данных с сервера в клиентское приложение.
Проблема заключается в том, что данные на стороне сервера выглядят хорошо, но на стороне клиента строки данных смещаются. 0; 436128
0; 436105
1; 436080
2; 436054
3; 436027
4; 435999
5; 435969
6; 435939
7; 435906
8; 435873
9; 435838
10; 435801
11; 435763
12; 435723
13; 435681
14; 435637
15; 435592
16; 435544
17; 435495
18; 435443
19; 435389
20; 435333
< /code>
Вывод клиентской строки после recv (): < /p>
0; 436128
0; 436105
1; 436080
2; 436054
3; 436027
4; 435999
5; 435969
6; 435939
7; 435906
8; 435873
9; 435838
0; 435801
; 435763
435723
435681
14; 435637
15; 435592
16; 435544
17; 435495
18; 435443
19; 435389
20; 435333
Я попытался использовать функции read ()/write (), но у меня есть одинаковые проблемы.
Могу ли я использовать некоторые флаги в функциях send ()/recv () для решения этого? for ( idx=0; idx
Вот что я делаю на стороне клиента: < /p>
for( idx =0; idx < 1024; idx++) {
recv(client_fd, buffer, sizeof(buffer) - 1, 0);
strcpy( &str_line[0], &buffer[0]);
puts(str_line);
}
< /code>
Вот код для функций FormatxData и FormatyData: < /p>
#define DIGIT8 (int)100000000
#define DIGIT7 (int)10000000
#define DIGIT6 (int)1000000
#define DIGIT5 (int)100000
#define DIGIT4 (int)10000
#define DIGIT3 (int)1000
#define DIGIT2 (int)100
#define DIGIT1 (int)10
#define DIGIT0 (int)0
/// @brief fill string with spaces
/// @param num
/// @param str
void formatXData( int num, char* str ) {
char temp_str[16];
if ( num < DIGIT1 ) {
sprintf( temp_str," %d",num);
} else if ( num < DIGIT2) {
sprintf( temp_str," %d",num);
} else if ( num < DIGIT3) {
sprintf( temp_str," %d",num);
} else {
sprintf( temp_str,"%d",num);
}
strcpy( str, &temp_str[0] );
}
/// @brief fill string with spaces
/// @param num
/// @param str
static void formatYData( int num, char* str ) {
char temp_str[16];
if ( (num < DIGIT8) && (num >= DIGIT7) ) {
sprintf( temp_str,"%d",num);
} else if ( (num < DIGIT7) && (num >= DIGIT6) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT6) && (num >= DIGIT5) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT5) && (num >= DIGIT4) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT4) && (num >= DIGIT3) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT3) && (num >= DIGIT2) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT2) && (num >= DIGIT1) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT1) && (num >= DIGIT0) ) {
sprintf( temp_str," %d",num);
} else if ( (num < DIGIT0) && (num >= (-DIGIT1)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT1)) && (num >= (-DIGIT2)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT2)) && (num >= (-DIGIT3)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT3)) && (num >= (-DIGIT4)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT4)) && (num >= (-DIGIT5)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT5)) && (num >= (-DIGIT6)) ) {
sprintf( temp_str," %d",num);
} else if ( (num < (-DIGIT6)) && (num >= (-DIGIT7)) ) {
sprintf( temp_str,"%d",num);
} else if( (num < (-DIGIT7)) && (num >= (-DIGIT8)) ) {
sprintf( temp_str,"%d",num);
}
strcpy( str, &temp_str[0] );
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79749086/c-programming-linux-safe-server-to-client-send-recv-communication[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия