Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 全双工插座与使用的两个插座相比,一个用于读取,另一个用于写入_Sockets_Networking_Duplex - Fatal编程技术网

Sockets 全双工插座与使用的两个插座相比,一个用于读取,另一个用于写入

Sockets 全双工插座与使用的两个插座相比,一个用于读取,另一个用于写入,sockets,networking,duplex,Sockets,Networking,Duplex,我在想 第一个问题每个对等点使用一个套接字(全双工)和两个套接字(单工)的优缺点是什么:一个用于读取,另一个用于写入?特别是在性能和资源利用方面 第二个问题是,如果我选择在每个对等机上使用超过1个套接字,那么我所做的所有读写操作都是如此。那么它能帮助我扩展处理的邮件数量吗 第三个问题:什么可以帮助我确定每个对等机的套接字数量?网络带宽?输入和输出的邮件数 所有的问题都是不同的,没有任何相互关系 使用一个插座(全双工)和两个插座(一个用于读,另一个用于写)的优缺点是什么?特别是在性能和资源利用方面

我在想

第一个问题每个对等点使用一个套接字(全双工)和两个套接字(单工)的优缺点是什么:一个用于读取,另一个用于写入?特别是在性能和资源利用方面

第二个问题是,如果我选择在每个对等机上使用超过1个套接字,那么我所做的所有读写操作都是如此。那么它能帮助我扩展处理的邮件数量吗

第三个问题:什么可以帮助我确定每个对等机的套接字数量?网络带宽?输入和输出的邮件数

所有的问题都是不同的,没有任何相互关系

使用一个插座(全双工)和两个插座(一个用于读,另一个用于写)的优缺点是什么?特别是在性能和资源利用方面

Pro one套接字:资源利用率。对一插座:零。性能:相同,但如果只使用一个插座,则可以节省连接和关闭握手的时间

在这种情况下,我选择采用两个套接字的方法,那么使用两个套接字的全双工方式将不会有用,这样就可以帮助我在数据流入和流出方面进行扩展了吗

现在你在比较苹果和桔子。不能将一个全双工套接字与两个全双工套接字进行比较。我不知道为什么您认为您可能需要两个入站和两个出站流,但您不需要。除了FTP之外,我能想到的每个协议都只使用一个

网络带宽对它有什么影响

或者它对网络利用率有什么影响

零,除了连接和近距离握手。但是它在两端都浪费资源。

我们添加了一个测试全双工套接字的全双工。每个-d或--dualtest选项可以将其配置为两个套接字。我们发现“你的里程数会有所不同”,没有一个通用的答案来回答是否有相同的性能。从理论上看,他们应该是平等的,但在实践中,也许不是

   -d, --dualtest
          Do a bidirectional test simultanous test using two unidirectional sockets

       --fq-rate n[kmgKMG]
          Set a rate to be used with fair-queueing based socket-level pacing, in bytes or bits per second. Only available on  platforms  supporting  the  SO_MAX_PACING_RATE  socket  option.
          (Note: Here the suffixes indicate bytes/sec or bits/sec per use of uppercase or lowercase, respectively)

       --full-duplex
          run a full duplex test, i.e. traffic in both transmit and receive directions using the same socket

Bob

什么样的应用程序使用该套接字?如果您需要不同类型的并行通信,您必须使用两个套接字,如FTP。一些专有协议通过TCP套接字发送和接收消息。使用两个套接字的一个缺点是增加了复杂性。对于单个插座,该插座要么已连接,要么未连接。对于两个套接字,现在您必须了解当两个套接字连接中的一个已断开(或连接失败),而另一个仍在连接时如何处理它。这是额外的麻烦,没有明显的好处。对不起,我没能把问题写好。第二个问题与第1个问题不同,它们没有相互关联。在第二个问题中,我想知道的是,若我选择在每个目的地使用两个套接字,那个么在这两个目的地上我都会读写。然后,它可以帮助我扩展处理邮件的数量。第三个问题是选择每个目的地的插座数量,这应取决于可用带宽?第二个问题的答案取决于您的功能要求。我看不出这有什么帮助。第三个问题的答案是否定的。@EJP只是为了扮演魔鬼代言人(因为我也认为两个插座就是一个插座太多了)。。。TCP数据包被丢弃的情况如何?在单套接字情况下,该方向的整个数据流将暂停(短暂),直到检测到丢弃的数据包并重新发送。有了两个套接字,您可以在这段时间内继续从另一个套接字接收数据,因为TCP流B不会受到从TCP流a丢弃的数据包的影响。@JeremyFriesner当然,如果您的功能需求如此指示的话。大多数情况下,他们没有。大多数情况下,它们要求您以串行方式而不是并行方式执行客户端事务。如果延迟较大,如美国和欧洲国家之间的通信,并且需要许多请求-响应通信,并且大多数请求-响应通信是独立的,增加套接字的数量通常有助于提高消息处理能力。如果使用10gb/s网络并发送大数据包,一个套接字就足够了,因为硬盘的数据带宽限制了数据传输的速度。