Ответы пользователя по тегу C++
  • Как сделать чтобы слово выводило в столбик?

    @FirststepsRu
    Видимо имелось в виду, что d будет индексом буквы, а получилось что стало счетчиком букв.

    #include <iostream>
    using namespace std;
    int main() {
    	char s[50];
    	int d = 0;
    	cin >> s;
    	while (s[d]) cout << s[d++] << endl;
    }
    Ответ написан
    Комментировать
  • Как реализовать опциональный ввод?

    @FirststepsRu
    Создание if для ввода b это правильно, но не до конца. Надо определить в main аргументы командной строки, тогда при задании какого-то аргумента в командной строке будет выполняться условие внутри программы. Правда код на Си :)

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char **argv) {
        int opt_b = 0;
        if (argc == 1) printf("No options\n");
    
        if ((argc > 1) && (strcmp(argv[1],"b")==0)) {
             opt_b = 1;
        }
    
        if (opt_b == 1) {
            printf("Option b\n");
        }
        return 0;
    }


    Потом при вызове программы задаете опции.

    root@localhost:~# ./a.out
    No options

    root@localhost:~# ./a.out b
    Option b
    Ответ написан
    Комментировать
  • Почему не работает TCP чат?

    @FirststepsRu
    По коду быстро понять сложно, не зная что было до изменений и какие изменения были внесены. По задаче эхо сервер это не чат. Задача эхо сервера отправлять клиенту теже данные, что он ему присал, это его смысл. Смысл чата в обратном, надо отправлять данные от клиента всем другим подключенным клиентам на сервере, кроме этого клиента (чтобы не было эха).

    По коду сервера не видно, что вы создаете список клиентов подключенных к нему. Только лишь отдельный поток для подключения. Поэтому клиент видит только то, что сам послал. А в режиме чата данные должны были бы передаваться между потоками через какую-то общую очередь сообщений, ведь клиенты могут быть подключены с разными скоростями и не все могут справиться одновременно с получением сообщения.

    Попробуйте изучить код чата реализуемого в https://eax.me/libevent/, за одно и изучите великолепную библиотеку. Создание потока на каждое соединение приводит к быстрому исчерпанию ресурсов и приводит к так называемой проблеме C10K (10000 соединений). В мире когда миллиарды клиентов могут обращаться к серверу решения по схеме поток на соединение имеют архитектурный изъян.
    Ответ написан
    Комментировать