我使用异步套接字使用MSDN文档在客户端和服务器之间建立连接:
https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.100).aspx
https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.100).aspx
我从Synchronous开始,后来开始使用Asynchronous。成功完成第一个应用程序后,我开始在GitHub存储库中搜索更多代码和更多解释。我发现了这个:
https://github.com/perrybutler/csharpsockets
它很好,它有效,但它有内存泄漏,我开始分析,我发现了这个:
(可能的内存泄漏)
(在各处发现循环检测的状态.Idk他们的意思。我认为应用程序或GC强制它停止并将其标记为循环)。
我觉得有些不对劲,因为如果你发送1MB的数据,内存应该只增加1MB,但后来会减少。但这不会发生。我开始处理所有事情而不会造成异常,但这并没有多大帮助。
我开始在StackOverflow和其他地方搜索这个,我发现了这个:
.NET Does NOT Have Reliable Asynchronouos Socket Communication?
但是,我并不真正了解那里正在讨论的内容。
我也发现了这个:
https://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod
我读到套接字需要确认何时它已经在BeginSend / EndSend&之间发送了数据。 BeginReceive / EndReceive,因为如果没有,它将等待,并开始增加内存(直到检测到循环?)
也许我与CodeProject共享我应该得到这个?我不知道,我必须从哪里开始。
我需要一本指南。我将尝试描述CodeProject。