【发布时间】:2017-01-02 18:26:06
【问题描述】:
我创建了一个处理 TCP 连接的库。它存在于服务器和客户端之外。根据 MSDN 的所有示例和可信来源的建议,我应该在 TcpClient 和 TcpListener 之间建立连接,然后从 TcpClient 向 TcpListener 发送数据并接收响应,最后关闭连接。
但我采取了不同的方法:首先我没有使用异步连接。其次,我没有让客户端在向服务器发送数据后等待响应。第三,我没有关闭连接。
我没有选择异步路径,因为我不知道使用它的好处。我没有让客户端等待响应,因为服务器不会响应某些消息。我没有关闭连接,因为我觉得客户端需要很长时间才能重新连接到服务器,只是为了通过流快速发送一些数据。由于连接没有关闭,而且我仍然希望新客户端能够连接,我让流监听器 - 现有客户端的 - 监听不同的线程。由于我不知道如何使用 FTP,所以我使用 FileStream 读取文件并将它们转换为要通过我的 TCP 连接发送的字节。
我的问题是: 1. 为什么要使用异步连接? 2. 客户端是否应该总是收到来自服务器的响应? 3. 如果您知道数据将在前一个数据发送后不久发送,是否应该关闭连接。 4. 让不同的线程处理每个客户端的通信是不是一个好主意。我使用了 ThreadPool,尽管我不确定线程的执行是如何工作的。是否在一个线程中异步执行不同的操作? 5.使用我的通过TCP连接从文件发送读取字节的方法来实现文件共享而不是使用FTP方法有什么缺点吗?
【问题讨论】:
标签: c# multithreading sockets tcp