env->CallVoidMethod(java_vector_object, java_vector_add, cls_object);
В среде Kotlin гораздо лучше выразить обратный вызов jni c ++ в ArrayList вместо вектора, который увеличивается почти вдвое по сравнению с фрагментом, как следует в ситуации, когда возвращаемый массив имеет неизменяемый фиксированный размер.
java_util_class = env->FindClass("java/util/ArrayList"); jmethodID java_add= env->GetMethodID(java_util_class, "add","(Ljava/lang/Object;)Z"); env->CallBooleanMethod(java_object, java_add, cls_object);
Лучшее решение - использовать исходный код для BitTorrent. Он был построен с помощью Twisted, пока они не перешли на реализацию C ++ под названием Utorrent.
В качестве альтернативы вы можете также взглянуть на Vertex .
Это построенная библиотека p2p поверх Twisted и поставляется с такими полезностями, как обход брандмауэров.
Вероятно, он более полный, чем образец других людей.
Да, витая была использована для создания начальной версии Bittorrent. Есть несколько библиотек с открытым исходным кодом.
Да, вы можете использовать twisted для создания p2p-приложения. Первое, что приходит мне в голову, - это Дтелла ( http://dtella.org/ ). Он использует протокол Direct Connect.
Они предоставляют исходный код, чтобы вы могли начать работу. Я знаю, что довольно много разных университетских сетей используют концентраторы постоянного тока. Кажется, это идеальное использование этого протокола.