2016-02-08 4 views
0

Это для проекта сети, над которым я работаю. Это требует от нас моделирования моста. Сокеты становятся портами в основном.UNIXSocket .connect(), но не имеют полного пути к сокету

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

Есть ли все-таки обойти это?

s = UNIXSocket.new(SOCK_SEQPACKET) 
    s.connect(padder(lan_one[i])) 

Часть, которая идет не так, является padder (lan_one [i]). Паддер в основном прокладывает «порт» до 108 символов. В любом случае, потому что «порт» составлен, он нигде не существует. Поэтому я не могу пройти к нему.

ответ

1

Я не знаю, что такое полный путь.

Вы указать путь в качестве аргумента constructor. Другими словами, путь - это то, что вы говорите. Открытие сокета таким образом создает фактический файл в файловой системе, если его еще нет, и он не работает (или должен делать), если он не может создать файл, например, поскольку файл с указанным именем уже существует или потому, что сегмент каталога указанного пути не существует.

Часть, которая идет не так, является padder (lan_one [i]). Паддер в основном прокладывает «порт» до 108 символов. В любом случае, потому что «порт» составлен, он нигде не существует. Поэтому я не могу пройти к нему.

Непонятно, как именно вы должны действовать. Сокеты Unix-домена не имеют портов, per se, и, конечно же, вы не можете подключиться к сокету, который не существует. Однако вы можете имитировать порты с путями. Например, вы можете использовать путь этого общего вида:

/base/dir/application/port 

Обратите внимание, что существует система конкретных ограничений на сколько время имен Unix-сокеты могут быть.

+0

Итак, сначала спасибо за ответ. Я не имею дело с файлами. Я получу идентификатор для имен LAN. UNIX-сокеты станут самими портами. Это все усилия, чтобы подражать мосту, подобному настройке. Таким образом, порт будет чем-то вроде 0aa8. Это случайное имя, которое было выбрано. Таким образом, нет никакого пути ни к чему. – isignisign

+0

@isignisign, я не уверен, какую часть вам здесь не хватает. Если вы хотите создавать сокеты Unix-домена отдельно, в отличие от анонимных, предварительно подключенных пар, то они * будут * существовать в файловой системе, и ваша * ответственность за назначение необходимых путей. Цель, для которой вы собираетесь использовать сокеты, не имеет значения. Характер и форма так называемых портов не имеет значения, за исключением того, что ваши пути сокетов больше не превышают максимальной длины и должны быть жизнеспособными путями файловой системы. –

+0

Я хочу сделать несвязанные Unix-сокеты, которые будут принимать и отправлять сообщения. Я не могу дать путь, потому что у меня его нет, и я не могу дать ему какой-либо путь. Скрипты, которые будут запущены на удаленном сервере, где я могу просто создать файлы. – isignisign