簡體   English   中英

設置套接字服務器

[英]Set up a socket server

我需要一個將啟動套接字服務器並等待連接的類。 這是我的代碼:

 public static void StatServer()
    {
        TcpClient client;
        TcpListener tcpListener;
        int _serverport = 9898;
        tcpListener = new TcpListener(System.Net.IPAddress.Any, _serverport);
        try
        {
            tcpListener.Start();
            while (true)
            {
                if (tcpListener.Pending())
                {
                    client = tcpListener.AcceptTcpClient();
                    Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
                    clientThread.Start(client);
                }
            }
        }
        catch (SocketException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

但是來自MSDN。 ,我們發現該代碼沒有TcpClient等,哪個代碼正確? 我是否誤解了這個概念?

我認為,兩者都是正確的。 我認為,TcpListener / client只是一種包裝,它在其中使用Socket。

只是看了看TcpListener的反編譯代碼

private Socket m_ServerSocket;

...

public TcpListener(IPEndPoint localEP)
{
  if (Logging.On)
    Logging.Enter(Logging.Sockets, (object) this, "TcpListener", (object) localEP);
  if (localEP == null)
    throw new ArgumentNullException("localEP");
  this.m_ServerSocketEP = localEP;
  this.m_ServerSocket = new Socket(this.m_ServerSocketEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  if (!Logging.On)
    return;
  Logging.Exit(Logging.Sockets, (object) this, "TcpListener", (string) null);
}

等等。

我認為TcpListener為您提供了一些舒適的方法,而Socket更底層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM