2013-03-13 52 views
0

只是出於自己的好奇心,我一直在挖掘各種Ruby標準庫。 'socket'庫有一個創建套接字對的方法。當我嘗試創建一個我收到以下錯誤信息:Ruby Socket.pair:「使用與請求協議不兼容的地址」

Errno::EAFNOSUPPORT: An address incompatible with the requested protocol was used. - socketpair(2) 

我使用的代碼是直接從documentation

s1, s2 = Socket.pair(:UNIX, :DGRAM, 0) 
s1.send "a", 0 
s1.send "b", 0 
p s2.recv(10) #=> "a" 
p s2.recv(10) #=> "b" 

上什麼可能會導致此任何想法?

注:我在Windows機器上

+0

欲以windows機器上的unix套接字?祝你好運:) – 2013-03-13 14:34:45

回答

1

既然你是在Windows上,問題是這一行:

Socket.pair(:UNIX, :DGRAM, 0) #=> :UNIT refers to UNIX stream socket 

試試這個:

Socket.pair(:INET, :STREAM, 0) # TCP socket 
+0

感謝您的快速回復。不幸的是,我收到了一個類似的錯誤:Errno :: EPROTOTYPE:協議是在socket函數調用中指定的,它不支持請求的套接字類型的語義。 - socketpair(2)' – fbonetti 2013-03-13 14:45:16

+1

@effbott你可以嘗試更改':DGRAM'爲':STREAM'嗎? – fmendez 2013-03-13 14:49:52

+0

工作!謝謝。如果您編輯的答案包括:STREAM而不是:DGRAM,我會接受它。 – fbonetti 2013-03-13 14:53:09