@dlangru

Страница 33 из 719
Ruslan
27.06.2016
19:16:46
в либе вот куски кода https://github.com/RevenantX/LiteNetLib/blob/master/LiteNetLib/NatPunchModule.cs и пример https://github.com/RevenantX/LiteNetLib/blob/master/LibSample/HolePunchServerTest.cs

0x9d8e
27.06.2016
19:17:29
В смысле сервер может пропустить, а у клиента с другого айпишника ничего не получится? Тогда по идее можно делать эту проверку с другого айпишника?

Ruslan
27.06.2016
19:24:17
я аж запутался

я просто слегка накурен)

Google
0x9d8e
27.06.2016
19:31:53
Идея была запилить инструмент, прозрачно соединяющий двух (для начала) клиентов между собой любым доступным способом (вплоть до связи через серверы мессенджеров, а то и вовсе через почту с буферизацией пакетов и пересылкой их пачками в письмах). Чтобы в приложении можно было ни о чём кроме некоего идентификатора не думать. В детстве на вижуал бейсике пытался какие-то игрушки, чаты делать, да всё только по локалке выходило. Разве что получилось "ssh" через мейлру агент сколхозить ? А теперь думаю чего бы не запилить либу (скорее даже утилиту). И ещё одну для какой-нибудь маршрутизации поверх этого. А поверх уже любые хотелки. Что-то вроде "запили для себя, друзей, коллег и ботнета примитивную оверлейную сеть с чем вздумается на прикладном уровне" (речь не про tor, i2p и т.п. а про легковесную ерунду для наколенных задач).

Ruslan
27.06.2016
19:32:26
норм идея

0x9d8e
27.06.2016
19:34:38
Можно будет всякие вещи хоть на баше/батниках ваять.

Oleg
27.06.2016
19:37:00
ребят) раз вы тут по сетям спецы, помогите с фаерволом)))))

мягко выражаясь я зае*ался...

дано: ноут, МТС модем и телефон

надо: открыть доступ по желаемому порту с телефона к компу

по сути локальная сеть через модем

это вообще фаервол?

и где он

на ноуте открыл, однозначно

Ruslan
27.06.2016
19:39:03
это NAT

Oleg
27.06.2016
19:39:13
не не не, это локальная сеть

Google
Oleg
27.06.2016
19:39:49
тоесть модем раздаёт wi-fi и ноут с телефоном к нему подрублены

по 80 порту идёт

а по 8080 нет

может роутор железно это блокировать без возможности настройки?

# firewall-cmd —get-active-zones FedoraWorkstation interfaces: wlp3s0 # firewall-cmd —zone=FedoraWorkstation —query-port=8080/tcp yes

я вообще то делаю хоть?

причём даже с локальной машины по ip не пропускает localhost:8080 работает 192.168.0.100:8080 не работает

0x9d8e
27.06.2016
19:49:13
Вот какие-то подобные задачи эта утилита и будет выполнять. Прост чёт типа superPuperNet listen host=our_goodness_chat name=vasya-server channels_only=ip,some_messenger,gmail gmail=example@gmail.com:qwerty transfer_to_local_port=1234

И ждём коннектов на 1234 с localhost'а

В смысле от самой утилиты, которая таким макаром внешние подключения от аналогичной фигни проксирует через что получится.

Хотя надо будет по-нормальному это продумать чтобы не переделывать.

Oleg
28.06.2016
06:08:40
что значит адрес привязки в vibe? settings.bindAddresses = ["::1", "127.0.0.1"];

ну, как я понимаю, не только в vibe

Dmitry
28.06.2016
09:18:41
Ну первое походу ipv6.

Tsundershark
28.06.2016
09:19:28
Для привязки к разным интерфейсам, думаю. Например: есть eth0 с 192.168.5.1 и eth1 с 192.168.1.1. И это позволяет указать, с какого именно будет слушать Могу ошибаться, не уверен

Dmitry
28.06.2016
09:19:55
Меня больше интересует что из себя сокет представляет. Это область в памяти? Или как?

Oleg
28.06.2016
09:20:07
это я к тому, что смысл был этом значении брандмауер был не причём

сокет это в памяти)

но как файл на диске

если unix сокет

Google
Oleg
28.06.2016
09:21:46
вроде это тупейший буфер с блокировкой

можно положить туда и можно забрать

вроде ничего больше

Dmitry
28.06.2016
09:47:20
А там адрес получателя хранится?

Поток переключился допустим уже и что дальше? Как данные попадут нужному потоку

Oleg
28.06.2016
09:56:40
там не хранится адрес

unix сокет создаётся как файл

ты его открываешь и читаешь или пишешь как в обычный файл

в другом приложении тоже читаешь и пишешь

но это unix сокет

Dmitry
28.06.2016
12:29:35
А сетевые сокеты это не юникс сокеты?

Eto
28.06.2016
12:29:59
Разве юникс сокеты это не юникс сокеты?

Pavel
28.06.2016
12:32:26
Все зависит от уровня владения терминологией ;)

А сетевые сокеты это не юникс сокеты?
Вообще в линуксе по крайней мере есть два понятия - TCP сокеты и UNIX сокеты. Первый сокет - это установленное с интернетом соединение, а второй - это файл в файловой системе, куда тоже можно писать и читать оттуда.

Dmitry
28.06.2016
12:34:48
Tcp сокет что в себе хранит? Это область памяти?

Pavel
28.06.2016
12:36:18
Я в деталях не знаю, да и думаю что мало кто знает. Это такая абстракция, чтобы не вникать в подробности реализации.

Ну во-первых область памяти конечно, со всякими данными, ссылками на соединения, таймеры, буфера, что там еще есть..

Думаю реализации могут различаться на разных системах.

Dmitry
28.06.2016
12:38:20
Просто как данные в нужный поток попадают?

0x9d8e
28.06.2016
12:38:34
tcp-сокет это всётаки не "соединение с интернетом", а открытый (на прослушку или соединённый с кем-то) порт

Google
Dmitry
28.06.2016
12:38:55
А что такое порт? Участок памяти?

Pavel
28.06.2016
12:39:06
порт это число от 0 до 65536

0x9d8e
28.06.2016
12:39:13
порт в tcp/ip

номер

айдишник этого дела

Pavel
28.06.2016
12:39:50
Да, это получается адрес сокета в рамках одного хоста

А IP - адрес хоста в сети хостов

Т.е. чтобы отправить данные в опред. поток, тебе надо знать IP + port

Admin
ERROR: S client not available

Pavel
28.06.2016
12:40:57
Но с точки зрения программиста - сокет это у тебя переменная куда ты можешь написать что-то и прочитать

Ну и всякие другие операции, перевести в неблокирующий режим и т.д.

0x9d8e
28.06.2016
12:41:23
и итоге если пакет приходит на 123.45.67.89:666 то на 123.45.67.89 его прочтёт тот, кто специально читает 666 порт

при том оно скорее даже так: local_host:local_port remote_host:remote_port

Dmitry
28.06.2016
12:50:17
А как данные в нужный поток попадают? Поток выполнения то может быть уже другим нежели тот который отправил запрос

Pavel
28.06.2016
12:54:46
Какой-то слишком абстрактный вопрос. Какой поток, какие данные?

Dmitry
28.06.2016
12:56:54
Ну вот есть поток выполнения. Он отправляет запрос к БД. Потом идет переключение контекста. Но когда данные прилетают там уже другой поток активен.

Если бы один поток = один порт было бы ясно, а тут порт один а потоков много

0x9d8e
28.06.2016
12:58:45
Может дело в том, кто прочтёт из порта?

Кто прочтёт тот и прочтёт

Dmitry
28.06.2016
13:21:21
Тогда поток будет получать чужие данные

Google
0x9d8e
28.06.2016
13:25:59
С чего-бы? Если он слушает порт, то прочтёт данные их этого порта. Они не могут быть "чужими". Если он коннектится на удалённый порт, то прочтёт данные соответствующие local_host:local_port remote_host:remote_port

Или что значит чужие?

Dmitry
28.06.2016
13:37:19
Ну вот у приложения допустим пять потоков. Один поток отправил запрос, потом уснул, потом ОС передала управление на другой поток и второй поток видит данные для первого потока

В этом самом сокете

0x9d8e
28.06.2016
13:58:18
Ему для этого нужно делать пять сокетов

Я конечно могу ошибаться, так как по сути не работал напрямую с tcp/ip двенадцать лет (со школы ?), и то было в вижуал бейсике, но там это именно так и делал: создавал целый массив tcp-сокетов.

0x9d8e
28.06.2016
14:02:56
А, кстати, "кто первый встал того и тапки" будут скорее всего

Не обязательно же всем надо чтобы кто отправил тот и получил ответ

Один отправил, далее кто на момент ответа оказался свободен тот и обработал

Чудесно же)

Oleg
28.06.2016
14:06:35
Вроде нельзя двум приложениям на один порт повеситься

Система следит за этим

0x9d8e
28.06.2016
14:06:58
Речь то не за приложения (процессы), а за потоки

Oleg
28.06.2016
14:07:39
А

Не разглядел

0x9d8e
28.06.2016
14:09:21
Пару лет назад читал, что nginx как-то так и делает: n потоков-воркеров берут запросы из очереди и обрабатывают, при этом медленный запрос заёмёт один воркер, а за это время другие воркеры обработают кучу быстрых запросов.

Сами эти воркеры очень редко убиваются или создаются новые (их просто некое оптимальное количество), таким образом накладные расходы ещё сокращаются

Но там, полагаю, всётаки не с сокетом они работают, а с обёрткой над ним, которая создаёт очередь, сбрасывает запросы по таймауту и всё такое.

Tsundershark
28.06.2016
15:37:21
https://habrahabr.ru/post/260669/

Вот, к слову, хорошая статья про неблокирубщие сокеты в Nginx

Страница 33 из 719