2010-09-22 3 views
3

Я беру класс прямо сейчас, когда некоторые из примеров находятся на C#. Поскольку мой ноутбук работает под управлением Linux, я использую Mono 2.6.7 на Ubuntu.Моно говорит: «System.Net.Dns.GetHostEntry (string)» недоступен из-за его уровня защиты

Я пытаюсь скомпилировать следующий код:

using System.Net.Sockets; 
using System.Net; 
using System; 

/// <summary> 
/// Example program showing simple TCP socket connections in C#.NET. 
/// Rather than reading and writing byte arrays, this example show 
/// how to use a stream reader in the client. 
/// TCPSocketServer is the socket server. 
/// <author>Tim Lindquist ASU Polytechnic Department of Engineering</author> 
/// <version>September, 2009</version> 
/// </summary> 
public class TCPSocketServer { 

    public static void Main (string [] args) { 
    IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0]; 
    TcpListener tcpl = new TcpListener(ipAddress, 9090); 
    tcpl.Start(); 
    Console.WriteLine("TCPSocketServer waiting for connections on 9090"); 
    Socket sock = tcpl.AcceptSocket(); 
    string msg = "Hello Client"; 
    Byte[] msgBytes = System.Text.Encoding.ASCII.GetBytes(msg); 
    sock.Send(msgBytes, msgBytes.Length, SocketFlags.DontRoute); 
    Console.WriteLine("Message-Hello Client-sent to client."); 
    tcpl.Stop(); 
    sock.Close(); 
    } 
} 

Когда я компиляции кода, я получаю:

/home/vivin/Projects/cst420/CSSockets/src/TCPSocketServer.cs(16,31): error CS0122: `System.Net.Dns.GetHostEntry(string)' is inaccessible due to its protection level 
/usr/lib/mono/gac/System/1.0.5000.0__b77a5c561934e089/System.dll (Location of the symbol related to previous error) 
ompilation failed: 1 error(s), 0 warnings 

Я C# новичок; это первая программа на C#, которую я когда-либо компилировал. Я попробовал поиск в Google, но у меня не было очень много хитов для этой проблемы. Это проблема с Mono?

ответ

7

System.Net.Dns.GetHostEntry было представлено в .NET Framework 2.0. В реализации Mono он также присутствует в версиях до версии 2.0, но помечен как internal вместо public. Кажется, вы компилируете файл .NET Framework 1.0.

От /mcs/class/System/System.Net/Dns.cs:

#if NET_2_0 
    public 
#else 
    internal 
#endif 
    static IPHostEntry GetHostEntry (string hostNameOrAddress) 
    { 
     // ... 
+2

В ретроспективе «Система/1.0.5000.0__b77a5c561934e089» должна была быть отдачей :) –

+0

Вот и все! Я использовал 'mcs'. Когда я использовал 'gmcs', проблема исчезла. Благодаря! –

5

Вы используете gmcs компилятор?

Смежные вопросы