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
C# 如何使用套接字(状态对象)_C#_Sockets_Asynchronous - Fatal编程技术网

C# 如何使用套接字(状态对象)

C# 如何使用套接字(状态对象),c#,sockets,asynchronous,C#,Sockets,Asynchronous,我正在学习套接字,以及如何为服务器和客户端创建代码 (顺便说一句,我正在做异步服务器和客户端套接字) 我真正不明白的是,当一个新的客户端连接到服务器时,我创建了一个新的StateObject。这是一个自定义类,包含一些字段,如实际套接字和缓冲区(指定长度的字节[]) 所以,只要客户端已连接,我就必须继续检查状态对象的这个实例,还是不需要 接收完成后是否关闭插座(这是两种方法) 如何创建所有客户端的列表?我必须创建这些状态对象的集合吗 -- 我这么问是因为我不太了解异步套接字的真正工作原理,即

我正在学习套接字,以及如何为服务器和客户端创建代码

(顺便说一句,我正在做异步服务器和客户端套接字)

我真正不明白的是,当一个新的客户端连接到服务器时,我创建了一个新的StateObject。这是一个自定义类,包含一些字段,如实际套接字和缓冲区(指定长度的字节[])

  • 所以,只要客户端已连接,我就必须继续检查状态对象的这个实例,还是不需要

  • 接收完成后是否关闭插座(这是两种方法)

  • 如何创建所有客户端的列表?我必须创建这些状态对象的集合吗

--

我这么问是因为我不太了解异步套接字的真正工作原理,即使我花了几天的时间

如果我确实创建了这些状态对象的列表,并且在foreach循环中尝试在一个一个地(实际上是一个接一个地)向每个状态对象发送数据时,它只是没有发送数据,那么有什么让我困惑的(事实上现在仍然如此)

--

增加:

通过创建一个列表来跟踪所有客户机是否足够,其中T将是一个套接字类?国家对象呢?是否仅在传递数据时使用:

  • 在服务器端(当新数据出现时)

  • 在客户端(当新数据到达时)

请提前发送Thx以获得答复


Mitja听起来像是在使用.Net 4.5之前的API。如果你重视你的理智,考虑学习Asic/Acess,因为它使得像国家这样的问题变得更容易管理。不,我不使用任何类似的东西。我只是尝试使用异步服务器和客户端套接字。但是我努力学习所有这些方法是如何工作的——当BeginXXX方法工作时。请注意,Receive方法实现了AsyncCallback委托,因此我认为您不需要显式跟踪state对象的实例。所有状态对象的集合将帮助您确定客户端。检查