当前位置: 首页 > 知识库问答 >
问题:

TcpListener与套接字

钱嘉致
2023-03-14

你好,我想问一下使用这个有什么不同:

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);

谢谢你的回答

共有1个答案

司徒志强
2023-03-14

Socket和tcplistener/tcpclient之间的区别在于tcplistener/tcpclient比Socket更容易使用。Socket可以完成tcplistener/tcpclient可以完成的所有工作。如果您是网络编程新手,建议使用TCPListener/TCPClient。对于大多数任务,TcpClient/TcpListener的性能相似。只有当您有问题或功能不足时,才应该考虑套接字。

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

 类似资料:
  • 问题内容: 我试图理解SocketChannels和NIO。我知道如何使用常规套接字,以及如何制作一个简单的每客户端线程服务器(使用常规阻塞套接字)。 所以我的问题是: 什么是SocketChannel? 当使用SocketChannel而不是Socket时,我还能得到什么呢? 通道和缓冲区之间是什么关系? 什么是选择器? 文档中的第一句话是。那是什么意思? 我也阅读了本文档,但是不知何故…… 问

  • 试着找出我做错了什么。我一直收到这样的错误:“失败:WebSocket握手期间出错:Sec WebSocket接受不匹配”。 下面是我从服务器得到的: 我采用了“EN04JZBFLCFCHK5QNUXJG==”并添加了“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”以获得以下内容: 所以我的回应是: 我不确定我做错了什么,但从我在其他示例中看到的情况来看,我的webso

  • 我有一个UDP服务器,它必须同时为IPV4和IPV6地址上的客户端提供服务。我创建了一个IPV6套接字来同时为IPV4和IPV6客户端服务。 服务器在第一次通信时存储客户端的IPAddress。如果是IPV4客户端,则存储为IPV4地址;如果是IPV6客户端,则服务器存储为IPV6地址。对于以后的所有通信,它检查存储是否已知(存储)该客户端,然后相应地执行操作。为了将客户端地址与存储的地址进行比较

  • 问题内容: 我最近在玩go,尝试制作一些服务器来响应tcp连接上的客户端。 我的问题是我该如何干净地关闭服务器并中断在以下调用中当前“被阻止”的go例程 func(* TCPListener)接受吗? 根据接受文件 Accept在侦听器接口中实现Accept方法;它等待下一个调用并返回通用Conn。 错误也很少被记录下来。 问题答案: 这是我一直在寻找的东西。也许将来会帮助某人。注意使用selec

  • 问题内容: 为什么有人会喜欢阻止写而不是非阻止写?我的理解是,仅当您想确保写方法返回后,另一端获得了TCP数据包时,才希望阻止写操作,但是我什至不知道这是可能的。您将必须刷新,而刷新则必须刷新 底层操作系统的写套接字缓冲区 。那么,无阻塞套接字写是否有任何缺点?就性能而言,拥有较大的底层写套接字是否会缓冲一个不好的主意?我的理解是,底层套接字写缓冲区越小,当底层套接字缓冲区已满且isWritabl

  • 我搜遍了谷歌,也找不到这个问题的解决方案: 我正在尝试在我的Android设备上进行一些基本的套接字编程(客户端/服务器应用程序),但我没有启动服务器应用程序。在我的本机代码中,我调用了bind(…),我从日志中看到它返回-1。当我检查errno时,值是97(EAFNOSUPPORT),表示“协议不支持地址系列”。当我检查sin_family的值时,它是AF_INET的,即IPv4。Android