1 / 1 / 0
Регистрация: 20.04.2018
Сообщений: 58
1

Копирование сокета или передача сокета в функцию

20.06.2018, 07:55. Показов 2390. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день всем, столкнулся с тем что не могу скопировать сокет.

C++
1
2
3
4
5
6
boost::asio::ip::tcp::socket socket(io_service);
acceptor.accept(socket);
ChatClient(socket);
 
int ChatClient(boost::asio::ip::tcp::socket socket)
{ }
вылетают ошибки типа
error C2280: "boost::asio::basic_stream_socket<boost::asio::ip::tcp>::basic_stream_socket(con st boost::asio::basic_stream_socket<boost::asio::ip::tcp> &)": предпринята попытка ссылки на удаленную функцию

хотя так работает, но это не то, мне обязательно именно скопировать сокет
C++
1
2
3
4
5
boost::asio::ip::tcp::socket socket(io_service);
acceptor.accept(socket);
ChatClient(socket);
int ChatClient(boost::asio::ip::tcp::socket& socket)
{ }
думал обойти ошибку передачей сокета в вектор, но все равно не получается

C++
1
2
3
4
5
6
7
std::vector<boost::asio::ip::tcp::socket> s;
boost::asio::ip::tcp::socket socket(io_service);
s.push_back(socket);
ChatClient(s.back());
 
int ChatClient(boost::asio::ip::tcp::socket& socket)
{ }
такая ошибка note: "boost::asio::basic_stream_socket<boost::asio::ip::tcp>::basic_stream_socket(con st boost::asio::basic_stream_socket<boost::asio::ip::tcp> &)": функция неявно удалена, так как в "boost::asio::basic_stream_socket<boost::asio::ip::tcp>" содержится определяемый пользователем конструктор перемещения

Подскажите пожалуйста как можно скопировать сокет что бы передать его в функцию
и по возможности скажите в чем я косячу
1
20.06.2018, 07:55
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2018, 07:55
Ответы с готовыми решениями:

Передача сокета в поток и ошибка 10022
Делаю лабу по сетям, а именно, чат на UDP. Пишу поток для параллельного ввода/вывода Создаю поток для получения сообщений с сервера: ...

Запросы через сокеты, или отправка сокета на запрос
Всем привет не знаю как правильно сформулировать тему, опишу здесь. Вообщем суть такова - Есть phpmailer. На сайте организована...

Использование сокета в качестве сервера или клиента по ситуации
В большинстве клиент-серверных приложений сначала запускают сервер , затем клиентов. Но захотелось автоматизации , те автоматического...

2
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
20.06.2018, 10:44 2
socket не имеет конструктора копирования и operator=. Его можно только перемещать, то есть использовать move-семантику
C++
1
2
3
4
5
6
7
//boost/asio/basic_socket.hpp
 basic_socket(basic_socket&& other)
    : basic_io_object<SocketService>(
        BOOST_ASIO_MOVE_CAST(basic_socket)(other))
  {
  }
basic_socket& operator=(basic_socket&& other)
Добавлено через 3 минуты
Если вы хотите создавать копии, просто используйте общий указатель, или передавайте в функцию shared_ptr. Что-то типа такого
C++
1
2
3
4
5
typedef boost::shared_ptr<ip::tcp::socket> socket_ptr;
socket_ptr sock1(new ip::tcp::socket(service));
socket_ptr sock2(sock1); // ok
socket_ptr sock3;
sock3 = sock1; // ok
https://habr.com/post/193038/
1
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
23.06.2018, 00:40 3
Цитата Сообщение от Mastering Посмотреть сообщение
Подскажите пожалуйста как можно скопировать сокет что бы передать его в функцию
и по возможности скажите в чем я косячу
Тебе сообщение ошибки подсказывает, что нет у сокета конструктора копирования.
0
23.06.2018, 00:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2018, 00:40
Помогаю со студенческими работами здесь

Информация по сокету к материнке gigabyte ga-ma770-ud3 (rev 1.0) пайка сокета выполнена на шарах или на ножках?
Всем здрасте,вот интересует по данной материнке информация,пайка сокета выполнена на шарах или на ножках?

Перепайка сокета
На данный момент в материнке сокет FT1 BGA 413-Ball, процессор AMD Dual-Core Processor E-350 - 18Вт, 1.6 GHz. Возможно ли, если здать в...

Узнать ип сокета
Как узнать ип сокеты (переменная sock), который подключился к сервера? вот код: #include &lt;sys/types.h&gt; #include...

Уничтожение сокета
connect(client, SIGNAL(disconnected()), client, SLOT(deleteLater())); эта команда, на сервере, указывает, что когда клиент разорвет...

Чтение из сокета
Здравствуйте! Подскажите, как сделать, чтоб попытка чтения данных из разорванного сокета приводила к выбросу исключения (вообще, как...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Обработка массивов с помощью циклов в JavaScript
hw_wired 12.02.2025
Массивы в JavaScript - это упорядоченные наборы элементов, где каждый элемент имеет свой индекс, начиная с нуля. Они невероятно гибки в использовании, позволяя хранить данные любых типов - числа,. . .
Создание каталога и всех родительских каталогов с помощью Python
hw_wired 12.02.2025
Работа с файловой системой - одна из ключевых задач при разработке программного обеспечения. Особенно часто возникает потребность создавать каталоги для хранения файлов, логов, временных данных и. . .
Возврат файла к состоянию указанного коммита Git
hw_wired 12.02.2025
Git - распределенная система контроля версий, без которой сложно представить современную разработку программного обеспечения. Когда речь заходит о восстановлении файлов, Git предоставляет целый. . .
Сброс локальной ветки Git до состояния HEAD удаленного репозитория
hw_wired 12.02.2025
Работая в команде разработчиков, часто сталкиваешься с ситуацией, когда локальная версия кода существенно отличается от той, что находится в центральном репозитории. Такое расхождение может. . .
Запрет подсветки выделения текста с помощью CSS
hw_wired 12.02.2025
Выделение текста - одна из базовых возможностей взаимодействия пользователя с контентом на веб-странице. Однако в некоторых случаях стандартное поведение выделения может нарушать задуманный дизайн. . .
Выполнение другой программы из приложения Python
hw_wired 12.02.2025
При разработке современных приложений часто возникает потребность в запуске и взаимодействии с другими программами прямо из кода. Python предоставляет множество эффективных средств для выполнения. . .
Отличия между let и var в JavaScript
hw_wired 12.02.2025
Работа с переменными - один из основных моментов при написании программ на JavaScript. От правильного объявления и использования переменных зависит не только читаемость кода, но и его надежность, а. . .
Подключение файла JavaScript в других файлах JavaScript
hw_wired 12.02.2025
Самый современный и рекомендуемый способ подключения JavaScript-файлов - использование системы модулей ES6 с ключевыми словами 'import' и 'export'. Этот подход позволяет явно указывать зависимости. . .
Отмена изменений, не внесенных в индекс Git
hw_wired 12.02.2025
Управление изменениями в Git - одна из важнейших задач при разработке программного обеспечения. В процессе работы часто возникают ситуации, когда нужно отменить внесенные изменения, которые еще не. . .
Что такое px, dip, dp, and sp в Android
hw_wired 12.02.2025
При разработке мобильных приложений для Android одним из ключевых вызовов становится адаптация интерфейса под различные устройства. А ведь их действительно немало - от компактных смартфонов до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru