2017-09-14 4 views
7

Je voudrais communiquer avec mpv en utilisant des sockets Unix, mais Perl   6 n'offre pas d'interface de haut niveau pour ce faire. Alors j'ai pensé que je pourrais écrire un petit module pour cela, j'ai commencé à creuser plus profond, j'ai trouvé l'implémentation de IO::Socket::INET, et j'ai appris à propos des ops NQP nqp::socket et nqp::connect.Existe-t-il un moyen de gérer les sockets Unix en Perl 6?

Cependant, je n'ai trouvé aucune mention de ceux du NQP operations list, et ils semblent être très différents de l'API de socket BSD traditionnelle. Par conséquent, je voudrais demander: sont-ils capables de créer une socket Unix et de s'y connecter? Si c'est le cas, comment? Ou y a-t-il peut-être un autre moyen?

Répondre

2

Je pense que la meilleure façon est d'utiliser l'interface NativeCall pour appeler les fonctions de niveau C. Il y a une vieille documentation de conception qui suggère qu'un IO :: Socket :: UNIX a été pensé. Mais ce n'est pas encore fait dans les versions contemporaines de la spécification du langage.

+3

Merci, je l'ai résolu en utilisant 'IO :: Socket :: UNIX' de Perl 5 au moyen de' Inline :: Perl5' qui fonctionne comme charme. Je voulais juste savoir s'il existe une solution native. – Ramillies

+1

J'ai prévu d'ajouter des tuyaux et des sockets Unix, mais cela nécessitera un hacking moar (ce qui n'est pas très trivial). –

+0

@Ramillies cool content que cela fonctionne assez bien pour vous. NativeCall sur l'API C serait la solution la plus native. Les fonctions C semblent presque identiques à l'API Perl 5 donc probablement pas trop horrible à faire. –