Я хочу использовать сокет 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 ...).
Я могу предоставить больше кода. Я не знаю, где посмотреть. Любая подсказка? совет?
Спасибо!