Бред

Ответить в тред Ответить в тред
Check this out!
Аноним 24/12/21 Птн 00:26:14 2601210271
image.png 191Кб, 1280x1024
1280x1024
Двач помоги пожалуйста
Нужно из строки сделать массив символов в С++;
Мне нужно значение введенное пользователем передать в структуру сокета.
есть строка ip, в нее записывается адрес сервера.
нужно ее передать в структуру сокета, но функция inet_addr() работает только с массивом символов.
Я попытался сделать это следующим образом, но ничего не получилось.
помогите пожалуйста

ZeroMemory(&saddr_1, sizeof(saddr_1));
saddr_1.sin_family = AF_INET;
saddr_1.sin_port = port_one;
char* ip_char = new char[ip.size() + 1];
copy(ip.begin(), ip.end(), ip_char);
ip_char[ip.size() + 1] = '\0';
cout << ip_char << "\n";
cout << ip.size();
saddr_1.sin_addr.s_addr = inet_addr(ip_char); //сюда нужно передать айпи
delete[] ip_char;
Вот код полностью
https://pastebin.com/PKHxLCGn
Аноним 24/12/21 Птн 00:27:11 2601210772
бамп
Аноним 24/12/21 Птн 00:27:30 2601210883
бамп
Аноним 24/12/21 Птн 00:27:46 2601211094
бамп
Аноним 24/12/21 Птн 00:28:13 2601211275
бамп
Аноним 24/12/21 Птн 00:28:41 2601211466
бамп
Аноним 24/12/21 Птн 00:29:46 2601211917
>>260121027 (OP)
Код не смотрел и не буду, но ты можешь изначально вместо string создать char и с ним же работать
Аноним 24/12/21 Птн 00:30:39 2601212328
бамп
Аноним 24/12/21 Птн 00:33:59 2601213759
>>260121191
там просто пользователь вводит, не определенное количество символов одной строкой, и надо из этой строки извлекать нужные, данные, а для этого нужны функции string.
Аноним 24/12/21 Птн 00:34:15 26012138410
бамп
Аноним 24/12/21 Птн 00:34:37 26012139811
бамп
Аноним 24/12/21 Птн 00:36:17 26012147612
бамп
Аноним 24/12/21 Птн 00:39:31 26012161013
>>260121027 (OP)
>сырые сокеты на плюсах
Выкинь это говнщие и найди нормальные сокеты
Аноним 24/12/21 Птн 00:39:34 26012161314
бамп
Аноним 24/12/21 Птн 00:40:08 26012163315
Аноним 24/12/21 Птн 00:42:51 26012175116
>>260121633
Никогда не поздно найти нормальную библиотеку а не писать на сыром говне
Алсо 5 секунд в гугле
https://ru.stackoverflow.com/questions/923810/Как-преобразовать-string-в-char
И впредь с такими вопросами иди на стак или к преподу а не сюда здесь тебе защеку закинут за плюсы питоноблядь какая нибудь
Аноним 24/12/21 Птн 00:47:48 26012192117
>>260121751
А я понял, в чем проблема была, оказывается присвоение строки массиву char работает, тут проблема была в присвоении порта. Я думал можно не использовать функцию htons(), если используешь переменную. Но нет.
Аноним 24/12/21 Птн 00:49:03 26012197518
>>260121921
Конечно нельзя
В сырых сокетах порт это отдельный тип который ты должен через эту функцию создать
Аноним 24/12/21 Птн 00:51:56 26012208019
>>260121975
Все решилось, всем спасибо
Аноним 24/12/21 Птн 01:00:40 26012238120
>>260121027 (OP)
> Нужно из строки сделать массив символов в С++;
String_name.c_str();
Аноним 24/12/21 Птн 01:00:56 26012239521
>>260121027 (OP)
охуеть, я даже это делать умею, хотя гум вышку закончил, программисты конечно пошли, не удивительно почему самолеты падают
Аноним 24/12/21 Птн 01:02:18 26012243222
За твой код Чайка даст тебе по ебалу
Аноним 24/12/21 Птн 01:04:05 26012248623
1638053244790.webm 1571Кб, 512x384, 00:00:34
512x384
Аноним 24/12/21 Птн 01:05:57 26012253524
>>260122486
Это прогромирование на плюсах?
Аноним 24/12/21 Птн 01:06:58 26012256825
Аноним 24/12/21 Птн 01:10:04 26012267126
Аноним 24/12/21 Птн 01:13:43 26012279627
>>260121921
> можно не использовать функцию htons()
Пчел, ты вообще в курсе что такое big endian и little endian?
Аноним 24/12/21 Птн 01:15:12 26012283728
>>260122535
Это то как тебя ебет твой же код когда прогаешь на плюсах.
Аноним 24/12/21 Птн 01:17:10 26012288829
>>260121975
Какой тип, это преобразование порядка байт.
Аноним 24/12/21 Птн 01:21:18 26012301830
>>260122796
Слева направо и справа налево
Аноним 24/12/21 Птн 01:24:34 26012314631
>>260121027 (OP)
Если это не лаба, то возьми лучше go
Аноним 24/12/21 Птн 01:26:47 26012322432
>>260123146
goвно нахуй никому не нужно. Я бы на его месте взял .Net и не парился.
Аноним 24/12/21 Птн 01:27:38 26012325833
>>260123018
Что слева направо/справа налево? Направление письма?
Аноним 24/12/21 Птн 01:28:46 26012329534
>>260123224
для сетевого гонва го самое то. .net это оверкилл, но честно говоря - похуй.
Аноним 24/12/21 Птн 01:29:06 26012330735
>>260123224
>2021
>Неиронично советовать .НЕТ
Чел…
Аноним 24/12/21 Птн 01:30:26 26012335036
>>260123258
Ну все отстань, я секунду погуглил что это, понял что не в этом проблема и закрыл.
Аноним 24/12/21 Птн 01:30:48 26012336437
>>260123307
не, ну он прав в какой-то степени с появлением net.core, но тут явно надо не c++ брать, а вот go самый лёгкий выбор.
Аноним 24/12/21 Птн 01:30:50 26012336738
@dvachannel ⚡ Д[...].mp4 8429Кб, 598x854, 00:00:39
598x854
24/12/21 Птн 01:31:17 26012338639
Аноним 24/12/21 Птн 01:31:25 26012339240
@dvachannel ⚡ Д[...].mp4 12707Кб, 480x854, 00:00:54
480x854
Аноним 24/12/21 Птн 01:33:09 26012345741
>>260123364
>net.core
Это уже устаревшее, сейчас просто .NET
Аноним 24/12/21 Птн 01:36:31 26012356142
Так, пока не разошлись, у меня вопрос
Аноним 24/12/21 Птн 01:36:52 26012357743
Аноним 24/12/21 Птн 01:36:59 26012358044
>>260121027 (OP)
Ты там это, оп, символ конца строки присваиваешь в элемент, который выходит за рамки массива, хорошо, что прога не валится.
Аноним 24/12/21 Птн 01:37:50 26012360245
>>260123307
В 10 раз удобнее и логичнее крестов.
24/12/21 Птн 01:38:25 26012361546
>>260121027 (OP)
Ахуеть пидарас дай телегу я как раз сегодня планировал разобраться с этой парашей вдруг подружимся будем няшить друг друга аахах
Аноним 24/12/21 Птн 01:39:41 26012365247
image.png 122Кб, 1280x1024
1280x1024
>>260123577
Я с помощью сокетов собрался передавать фаилы, как мне сделать так что бы не записывалось лишнее в фаил который я передаю по сети.
Вот к примеру я передаю данные фаила my1.txt, массивом char размером 6 символов. У меня в конец фаила записываются лишние символы
24/12/21 Птн 01:39:57 26012365748
>>260121375
Нихуя кстати, можно выделить дохуя большой буфер и по символу конца строки (нуль терминатор) определит что ВОТ ВСЕ.
Аноним 24/12/21 Птн 01:40:27 26012367449
>>260123615
@VRN_Dmitriy_Voronin
никаких няш мяш
Аноним 24/12/21 Птн 01:41:00 26012368650
Аноним 24/12/21 Птн 01:41:05 26012368851
>>260121027 (OP)
хз чел, на .net это делается одним стандартным методом
Аноним 24/12/21 Птн 01:42:53 26012372752
>>260123652
Значит у тебя массив больше чем нужно.
Аноним 24/12/21 Птн 01:43:24 26012373753
>>260123652
Ты его просто передаешь или как то шифруешь?
Аноним 24/12/21 Птн 01:44:57 26012377954
>>260123688
Он похоже не ищет легких путей.

мимо делаю подобную штуку на .net, только я передаю без ipv4 части, тупо данные через SharpPcap
Аноним 24/12/21 Птн 01:46:32 26012382655
>>260121027 (OP)
>Нужно из строки сделать массив символов в С++;
если речь про класс string, то можешь из него просто c_str() вызвать, вернет тебе указатель на массив символов
Аноним 24/12/21 Птн 01:48:06 26012386956
>>260121027 (OP)
Если ты сам не смог нагуглить ответ даже на такой базовый вопрос, то это плохие новости касательно твоих перспектив в программировании.
Самостоятельный поиск ответов и решений задач - это 90% работы.
Аноним 24/12/21 Птн 01:49:29 26012390257
>>260123652
Когда получаешь данные на стороне приёма у тебя данные пишутся в буфер. Очевидно, ты при записи записываешь больше чем в буфере было, т.е. либо мусор который получаешь выйдя за границы буфера, либо в самом буфере мусор.
> fstream::in | fstream::out | fstream::app | fstream::binary
fs.open(fstream::out | fstream::binary);
char msg[6];
int bread = recv(s_1, msg, sizeof(msg), NULL);
while (bread > 0)
{
fs.write(msg, bread);
bread = recv(s_1, msg, sizeof(msg), NULL);
}
Аноним 24/12/21 Птн 01:50:55 26012394158
>>260123652
Глянуть в отладке религия не позволяет?
Аноним 24/12/21 Птн 01:51:57 26012397459
>>260123727
Ну, да он больше, но как сделать так что бы из последнего полученного массива, записать, только нужные байты.
>>260123737
Просто передаю
Аноним 24/12/21 Птн 01:52:52 26012400260
>>260122568
ОН ТЕБЕ ПОЛНЫЙ И ВЕРНЫЙ ОТВТЕТ ДАЛ. ЧЕГО ТЕБЕ ЕЩЁ НУЖНО?
Аноним 24/12/21 Птн 01:55:08 26012406861
>>260123902
Я на стороне сервера делаю вот так
while (!fs.eof())
{
char msg[6] = "";
fs.read(msg, 6);
send(s_2, msg, sizeof(msg), NULL);
cout << msg << "\n";
}
Когда он считывает из фаила, но последние байты ничем не заполняет, надо как то придумать, что бы на стороне клиента не тронутые сервером байты не трогать
Аноним 24/12/21 Птн 02:01:31 26012426762
>>260124068
>>tfs.read(msg, 6);
size_t bRead = ifs.gcount();
send(s_2, msg, bRead, NULL);
Аноним 24/12/21 Птн 02:01:44 26012427163
while (!fs.eof())
{
char msg[6] = "";
fs.read(msg, 6);
send(s_2, msg, sizeof(msg), NULL);
cout << msg << "\n";
}
Аноним 24/12/21 Птн 02:02:35 26012429564
>>260124267
Даже так
size_t bRead = ifs.gcount();
send(s_2, msg, bRead, NULL);
Аноним 24/12/21 Птн 02:10:01 26012450265
>>260121027 (OP)
какие же крестоёбы дегенераты, пиздец просто
мимо pure C
Аноним 24/12/21 Птн 02:11:21 26012454066
>>260124502
в треде нет кода на С++, только чистый С, пидора ты кусок.
Аноним 24/12/21 Птн 02:12:34 26012457667
>>260124540
> Нужно из строки сделать массив символов в С++;
> char* ip_char = new char[ip.size() + 1];
Иди подмойса.
Аноним 24/12/21 Птн 02:13:36 26012460368
>>260124576
сорта маллока если честно
Аноним 24/12/21 Птн 02:16:07 26012468069
>>260124295
А на стороне клиента как сделать, там же все равно по 6 байт считает
Аноним 24/12/21 Птн 02:16:21 26012468470
>>260124603
Ну и нахрена тогда нужны кресты? В ядре линупса и без этой залупы всё предельно понятно.
Аноним 24/12/21 Птн 02:18:09 26012472471
>>260121027 (OP)
А чё у вас там нет toCharArray() из коробки? Хуя вы бомжи.
Аноним 24/12/21 Птн 02:18:11 26012472572
>>260124295
while (recv(s_1, msg, sizeof(msg), NULL))
{
fs.write(msg, 6);
}
Аноним 24/12/21 Птн 02:18:28 26012473173
>>260124680
Ты хотел сказать на принимающей стороне? Я же тебе дал код выше >>260123902
>>260124684
>Ну и нахрена тогда нужны кресты?
Чтобы иметь более абстрактные инструменты.
>В ядре линупса и без этой залупы всё предельно понятно.
Только многословно.
Аноним 24/12/21 Птн 02:21:07 26012480474
>>260124731
Сорта фломастеров, как по мне. Я лучше буду знать, что был kmalloc(sizeof(zalupa), flags) и что его где-то надо освободить, чем городить абстракции.
Аноним 24/12/21 Птн 02:24:54 26012488875
>>260124804
Ты просто не проникся абстракциями и метапрограммированием. Я как-то изучал OCaml после чего всерьёз хотел искать работу на нём настолько он казался охуенным когда я проникся.
Аноним 24/12/21 Птн 02:27:38 26012494676
>>260124731
ух ты, а я и не знал что она возвращает число считанных байтов)))
Аноним 24/12/21 Птн 02:28:42 26012497377
>>260124946
В доках же всё написано, а ms тебе даже переводилку на русский автоматическую добавил.
Аноним 24/12/21 Птн 02:28:46 26012497778
>>260124888
Я вообще экс-жабист, заебали эти ваши абстракции поверх абстракций. Проникся духом старой школы, так сказать.
Аноним 24/12/21 Птн 02:30:56 26012503379
image.png 1227Кб, 1080x594
1080x594
Аноним 24/12/21 Птн 02:31:31 26012504880
>>260124977
Вот уж не знаю как можно променять интерфейсы, GoF и SOLID и DI на printk и "kernel panic, ннннна, потому что ты ёбнный пидарас"
Аноним 24/12/21 Птн 02:34:41 26012511681
>>260125048
Ну зачем сразу panic, можно аккуратный oops, и дальше gdb. А KASAN вообще сильно жизнь упрощает разве что не отсасывает, всякую неочевидную хрень ловит с готовым стектрейсом.
Аноним 24/12/21 Птн 02:38:31 26012520682
Аноним 24/12/21 Птн 02:42:17 26012528383
image.png 34Кб, 496x966
496x966
>>260125206
Ну KASAN - реальная тема. Если где-то проебал лишний kfree, то он сразу высрется трейсом уровня бидона.
https://www.kernel.org/doc/html/latest/dev-tools/kasan.html
Для юзерспейса тоже такое есть, если компилятор не совсем древний. -fsanitize=address - всё счастье.
Аноним 24/12/21 Птн 02:50:50 26012545584
>>260125283
>kfree
В плюсах этого нет. Просто используешь смарты поинтеры и всё. Я даже разные ресурсы в них завожу и прикручиваю кастомный делитер.
Аноним 24/12/21 Птн 02:53:45 26012550385
>>260124731
Да, все работает, спасибо
Аноним 24/12/21 Птн 02:58:30 26012560486
>>260125455
Больше вероятность наебнуться. Иногда даже оптимизации компилятора могут дать уязвимость в неожиданном месте. Была CVEшка, где GCC убрал проверку на null из-за того, что перед ней обратились к одному из полей структуры.
Но, честно говоря, хз. Работает - значит работет. Пока. Всегда найдётся хитрый пидор, который вывернет это так, чтобы запустить левый код.
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов