C#异步套接字同时读写?

C#异步套接字同时读写?,c#,sockets,asynchronous,.net-4.5,C#,Sockets,Asynchronous,.net 4.5,我正在写一个tcp聊天服务器,我读了很多关于同步和异步套接字的文章 我决定使用异步套接字,因为这样我就不必自己管理线程了 在所有的文章中,都很好地解释了如何建立连接以及如何发送和接收数据,但从来没有解释过在没有回复的情况下发送多条消息会发生什么 我的问题是,在我想发送东西之前,我是否必须调用socket.endreceiving()???如果我不在发送信息的同时收到信息,会发生什么情况???(有多个线程,但它仍然是一个底层套接字对吗?根据我的经验,这对于socket.Send或socket.se

我正在写一个tcp聊天服务器,我读了很多关于同步和异步套接字的文章

我决定使用异步套接字,因为这样我就不必自己管理线程了

在所有的文章中,都很好地解释了如何建立连接以及如何发送和接收数据,但从来没有解释过在没有回复的情况下发送多条消息会发生什么


我的问题是,在我想发送东西之前,我是否必须调用
socket.endreceiving()
???如果我不在发送信息的同时收到信息,会发生什么情况???(有多个线程,但它仍然是一个底层套接字对吗?

根据我的经验,这对于
socket.Send
socket.sendsync
来说不是问题。在这里找到一个异步TCP侦听器和客户端的示例


你可以同时发送和写入,不能同时通过同一个套接字从两个线程发送。

我们可以有一个代码示例吗?我还没有真正的代码,我还在计划中。这是一个一般性问题。可行性研究是技术选择的重要组成部分。选择一种技术并尝试它。如果它失败了,你不知道为什么,我们希望看到代码。没有理由改变这种看法。无论您做什么,套接字都是异步的;如果您使用异步API,您不会因为线程等待通信而使系统负担过重,因此更具可扩展性。我编写了一些模块,这些模块使用TCP套接字跨多个线程发送数据。使用Socket.Send和SendAsync非常简单,您只需要以线程安全的方式管理缓冲区。