我正在上课,其中一些例子是在C#中。由于我的笔记本电脑运行Linux,我在Ubuntu上使用Mono 2.6.7。
我正在尝试编译以下代码:
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#程序。我尝试在谷歌上搜索,但我没有得到很多关于这个问题的点击。这是Mono的问题吗?
答案 0 :(得分: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)
{
// ...
答案 1 :(得分:5)
您使用的是gmcs
编译器吗?