Получите данные из сокета UNIX с помощью Swift на MacOS - PullRequest
0 голосов
/ 04 мая 2020

Я хочу использовать сокет UNIX на Macos, используя Swift, чтобы получить несколько байтов, ничего серьезного. Но я не могу прочитать какие-либо данные из сокета.

Почему UNIX розетка? Я хотел иметь «простой IP C». Я мог бы использовать TCP / IP, но теперь я хочу сделать эту работу.

Я создал сокет, используя SocketPort

    SocketPort(protocolFamily: AF_UNIX, socketType: SOCK_STREAM, protocol: 0, address: data)

Я создал поток ввода с:

    (...)
    CFStreamCreatePairWithSocket(kCFAllocatorDefault, port.socket, &readStream, nil)
    (...)
    self.inputStream = readStream!.takeRetainedValue()
    self.inputStream?.delegate = self
    self.inputStream?.schedule(in: RunLoop.current, forMode: .default)
    self.inputStream?.open()

И после запуска приложения все выглядит нормально, даже функция протокола StreamDelegate 'stream' вызывается с помощью eventCode для 'openCompleted' после открытия входного потока.

Затем я отправляю некоторые данные с помощью 'socat', но не могу получить эти байты в быстром приложении.

Я использую XCode, я добавил сетевые права, когда я где-то читал. Но я не могу отладить сокет. Я ожидал, что функция 'stream' будет вызвана после отправки данных в сокет.

Я читаю другие проекты, такие как BlueSocket (позже попробую, но не просто добавить его в мой существующий проект XCode), они кажутся go низкоуровневыми (вызов Darwin.socket, Darwin .connect ...).

Я могу предоставить больше кода. Я не знаю, где посмотреть. Любая подсказка? совет?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...