Utf 8 如何在Pharo中读取和写入Unix域套接字?

Utf 8 如何在Pharo中读取和写入Unix域套接字?,utf-8,smalltalk,pharo,Utf 8,Smalltalk,Pharo,我的应用程序需要读写到一个。我怎样才能从Pharo做到这一点?我认为你不能用套接字库做到这一点。在调用socket()(您需要AF\u LOCAL)时,原语已硬编码为AF\u INET)。此外,无法设置传递到connect()的struct sockaddr\u un的sun\u path字段 看起来您必须使用FFI或编写自己的插件。实际上,新的SocketPlugin原语允许访问所有套接字系列,而不仅仅是AF_INET。我知道,除了AF_INET之外,它还可以完成AF_INET 6,我几乎可以

我的应用程序需要读写到一个。我怎样才能从Pharo做到这一点?

我认为你不能用套接字库做到这一点。在调用
socket()
(您需要
AF\u LOCAL
)时,原语已硬编码为
AF\u INET
)。此外,无法设置传递到
connect()
struct sockaddr\u un
sun\u path
字段


看起来您必须使用FFI或编写自己的插件。

实际上,新的SocketPlugin原语允许访问所有套接字系列,而不仅仅是AF_INET。我知道,除了AF_INET之外,它还可以完成AF_INET 6,我几乎可以肯定它还可以完成所有其他功能。Pharo可能缺少新的图像代码来访问这些原语,我不知道。但例如Squeak Etoys在OLPC XO机器上使用它们进行IPv6网状网络

显然最近有人实施了它:

酷!是有新的原语,还是旧的原语得到了增强?多久以前?我从gitorious和SqSocketCreateNetTypeSocketTypeRecVByteSEndByTesseMaidReadSeMaidWriteSeMaid hardcodes INET获得了最近(约1个月)的源代码,如果类型为TCP或UDPThanks,则会失败。这些原语有没有吱吱作响的图像?我尝试了最新的etoys映像,但无法打开它,因为缺少“squeak”可执行文件(为什么squeak不在etoys中?)。有一个Squeak VM,我们刚刚将二进制文件重命名为“etoys”,因此它在进程列表中非常突出。Sean:是的,除了旧的原语之外,还有新的原语,所以同一个插件可以为新旧图像提供服务。例如,我看到一个方法SocketAddressInformation类>>addressFamilyLocal,另外还有#AddressFamilyNet4和AddressFamilyNet6,这两个方法必须对某些东西有好处。伯特:SocketAddressInformation存在于哪里?我在Squeak 4.3或Pharo 2.0中没有看到它。。。仅Etoys?请注意,不鼓励使用仅链接的答案,因此答案应该是搜索解决方案的终点(而不是另一个参考文献的中途停留,随着时间的推移,这些参考文献往往会过时)。请考虑在这里添加一个独立的概要,将链接作为参考。