Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
C#套接字发送vs开始发送性能_C#_Performance_Sockets - Fatal编程技术网

C#套接字发送vs开始发送性能

C#套接字发送vs开始发送性能,c#,performance,sockets,C#,Performance,Sockets,所以我知道Send是同步的,BeginSend是异步的。我听说Sockets发送方法的数据传输速度比BeginSend快(注意:我不是说CPU性能,而是说发送和接收数据包的延迟)。谁能告诉我这是真的还是假的?我所指的文章中,我听到同步数据传输如下所示。。。。 如果这是真的,有办法解决吗?或者这就是使用异步数据传输时的情况 非常感谢你的帮助。 第条案文: 这两种通信形式都是传输数据的手段。区别在于数据传输的格式不同。 异步通信是PC通信中最广泛使用的通信方法,通常用于电子邮件应用程序、Inte


所以我知道Send是同步的,BeginSend是异步的。我听说Sockets发送方法的数据传输速度比BeginSend快(注意:我不是说CPU性能,而是说发送和接收数据包的延迟)。谁能告诉我这是真的还是假的?我所指的文章中,我听到同步数据传输如下所示。。。。 如果这是真的,有办法解决吗?或者这就是使用异步数据传输时的情况

非常感谢你的帮助。

第条案文:

这两种通信形式都是传输数据的手段。区别在于数据传输的格式不同。 异步通信是PC通信中最广泛使用的通信方法,通常用于电子邮件应用程序、Internet访问和异步PC到PC通信。通过异步通信,数据一次传输一个字节,每个字节包含一个起始位、八个数据位和一个停止位,因此总共产生十位。在异步通信中,由于发送的每个字节都包含两个额外的位(起始位和停止位),因此会造成很大的开销,从而导致性能损失

同步通信是更有效的通信方法。CQ的连接解决方案通过同步通信方法进行通信。 通过同步通信,数据以大数据块的帧而不是庞大的单个字节的形式传输。同步的一个优点是控制信息很容易插入到每个块的开头和结尾,以确保恒定的定时或同步。同步的另一个优点是它比异步的效率更高。例如,56 Kbps拨号同步线每秒可以传输7000字节(56000/8),而56 Kbps拨号异步线每秒只能传输5600字节(56000/10)。当传输大量信息时,这将转化为速度和性能的显著提高

我听说Sockets发送方法的数据传输速度比BeginSend快

不是真的

至于文章的文本。你说的是两件完全不同的事情。计算机程序中的一种异步网络连接和异步方法

我听说Sockets发送方法的数据传输速度比BeginSend快

不是真的


至于文章的文本。你说的是两件完全不同的事情。计算机程序中的异步网络连接和异步方法。

这肯定不是真的。本文将在网络连接类型的上下文中讨论同步和异步。但是,它与如何使用套接字发送数据无关。在.Net中,Synchronous和Asynchronous只是指方法如何阻塞(同步)和不阻塞(异步),与数据传输速度无关。延迟在使用的任何同步和异步方法中都是相同的。

这肯定不是真的。本文将在网络连接类型的上下文中讨论同步和异步。但是,它与如何使用套接字发送数据无关。在.Net中,Synchronous和Asynchronous只是指方法如何阻塞(同步)和不阻塞(异步),与数据传输速度无关。延迟在所使用的任何同步和异步方法中都是相同的。

我要说的最关键的一点是,同步套接字方法更易于编程,并且可以在单个包装函数中完成。(我假设您将从Socket类继承,并添加自定义错误处理、日志记录等来包装发送和接收)

在异步情况下,您将需要至少两个函数和另一个类或结构(StateObject)来跟踪要传输的内容

您当然可以使用匿名委托技术来掩盖回调方法的存在,但这并不会改变这样一个事实,即您的代码理解起来会稍微复杂一点 (并维持)


我无法准确地计算时间函数,但我已经看到,对于较小的字节大小(8K),异步似乎更好。也许,当您使用ASync接收更大的缓冲区时,ASync func已经开始了,并且在您咀嚼之前接收的块时,它得到了更多的字节。

我要说的最关键的一点是,同步套接字方法更容易编程,并且可以在单个包装器函数中完成。(我假设您将从Socket类继承,并添加自定义错误处理、日志记录等来包装发送和接收)

在异步情况下,您将需要至少两个函数和另一个类或结构(StateObject)来跟踪要传输的内容

您当然可以使用匿名委托技术来掩盖回调方法的存在,但这并不会改变这样一个事实,即您的代码理解起来会稍微复杂一点 (并维持)


我无法准确地计算时间函数,但我已经看到,对于较小的字节大小(8K),异步似乎更好。也许,当您使用ASync接收更大的缓冲区时,ASync func已经向前推进,在您咀嚼之前接收到的块时,得到了更多的字节。

Haha,您的答案可能是“!AsyncSocket.IsFaster”;)哈哈,你们的答案可能是“!AsyncSocket.IsFaster”)你应该添加一个链接回到原来的文章(假设它是在线的)。我觉得这篇文章谈论的是一个较低的传输层(通过物理连接传输的比特的特定封装),而不是套接字层,套接字层是数据包的形成和传输方式