【问题标题】:TcpListener vs SocketTcpListener 与 Socket
【发布时间】:2014-01-15 14:55:28
【问题描述】:

你好我想问一下使用这个有什么区别:

public TcpListener Listener;
public TcpClient Client;

Listener = new TcpListener(DeafultPort);
Client = default(TcpClient);
Listener.Start();

还有这个:

serverSocket = new Socket(AddressFamily.InterNetwork, 
                                      SocketType.Stream, 
                                      ProtocolType.Tcp);

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 1000);

我也想知道如果我使用第一个选项有什么区别

Listener.BeginAcceptSocket()

Listener.Server.BeginAccept()

如果我使用第二个选项,这两行到底是什么?

serverSocket.Bind(ipEndPoint);
serverSocket.Listen(4);

感谢解答

【问题讨论】:

标签: c# sockets


【解决方案1】:

对于任何严肃的解决方案,使用 Sockets 而不是 TcpClient。它提供了更多的控制,并且在使用带有字节缓冲区的任务或线程和异步方法时通常是必需的。

【讨论】:

  • 这可能更适合作为注释,因为它并没有真正提供两个类之间的区别。
【解决方案2】:

Socket 和 TcpListener/TcpClient 的区别在于 TcpListener/TcpClient 比 Socket 更容易使用。 Socket 可以做 TcpListener/TcpClient 可以做的所有事情。如果您是网络编程新手,推荐使用 TcpListener/TcpClient。对于大多数任务,TcpClient/TcpListener 的性能相似。只有当您遇到问题或功能不足时,您才应该考虑使用 Sockets。

我知道我的回答在技术上并不正确,但在这种情况下,这就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2011-02-18
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多