2017-11-06 24 views
0

https://github.com/dotnet/corefx/issues/10981によると、実装をcorefx/src/System.Net.Sockets/tests/FunctionalTests/UnixDomainSocketTest.csからコピーし、以下のようにローカルで使用しました。dotnet core 2.0.0 Socket.Listen()はUNIXドメインソケットをサポートしていますか?

Operation not supported 
    at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) 
    at System.Net.Sockets.Socket.Listen(Int32 backlog) 
    at test01.Program.Main(String[] args) in /home/nonstatic/code/temp/test01/Program.cs:line 106 

DOTNETコアがドメインソケットサーバーを構築できるように任意の解決策や回避策があります:

Socket s = new Socket(AddressFamily.Unix, SocketType.Dgram, ProtocolType.Unspecified); 
Console.WriteLine(s.SendBufferSize); 
Console.WriteLine(s.ReceiveBufferSize); 

var unixSocket = "./my.sock.1"; 
var ep = new UnixDomainSocketEndPoint(unixSocket); 
Console.WriteLine(ep.AddressFamily); 

try 
{ 
    System.IO.File.Delete(unixSocket); 
    s.Bind(ep); 

    s.Listen(5); // **Operation not supported** 

    while(true) 
    { 
     var newS = s.Accept(); 

     byte[] content = new byte[1000]; 
     var result = s.Receive(content); 
     Console.WriteLine(result); 
     Console.WriteLine(Encoding.Default.GetString(content)); 
     newS.Close(); 
    } 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
    Console.WriteLine(e.StackTrace); 
    s.Close(); 
} 

を(私はUbuntuの上DOTNETコア2.0.0を使用しています)例外は、以下のようなものですLinux?ありがとう!

答えて

2

@stephentoubがあなたのcorresponding GitHub issueの答えで返信したようです。

SocketType.Dgramの代わりにSocketType.Streamを試しましたか?

関連する問題