- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个我不太明白的异步套接字场景...我有 2 个 Tcp 套接字,一个客户端套接字和一个服务器套接字。我的服务器套接字已绑定(bind)并正在监听端口。
我的客户端套接字连接到服务器套接字(使用 BeginConnect/EndConnect)。然后我使用 BeginSend() 向服务器发送一条消息。在服务器端,我不执行 Receive() 或 BeginReceive()。
发生的事情是我的 BeginSend 调用指定的 AsyncCallback 被调用并且它的 IAsyncResult 告诉我它已完成并且对 Socket.EndSend() 的调用没有引发任何异常...
只有当 BeginSend 调用实际向服务器发送了一些东西时(即:在服务器接收到所有字节后调用的回调),是否存在我没有得到或不应该调用我的 AsyncCallback 的东西?如果服务器上没有完成接收,我的回调是否应该在 sendtimeout 到期后调用,然后我对 Socket.EndSend 的调用会引发异常?
谢谢
最佳答案
不,TCP/IP 会为您处理所有这些。连接的两端都有缓冲区,可以保存数据直到可以接收到数据。如果没有缓冲,发送闲聊通信时可能会有可怕的延迟。
把它想象成邮寄一封信。它位于您的邮箱中,直到 postman 将其取走。一旦发生这种情况,它就被发送了。尚未收到。它可能正在运输途中,也可能正在他们的邮箱中等待他们阅读。
因此在 BeginSend 之后得到回调只会告诉您它已被发送。确定另一方是否接收并处理了数据的唯一方法是请求一定时间的确认。
关于C# Socket.BeginSend AsyncCallback 行为(超时?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2473759/
我想了解以下方面的一些信息: Socket.BeginSend Method (array[]()[], Int32, Int32, SocketFlags, AsyncCallback, Objec
我需要将对套接字的 BeginSend 调用排队,并且我需要它们按时间顺序执行。为此,我使用信号量在回调函数可以运行时发出信号。 大多数情况下它是有效的,因为每个异步回调都在一个单独的线程上执行,但偶
我是编程新手,对异步套接字编程感到困惑。 例如,假设我有两个 BeginSend,一个接一个。第一个发送一百万个字符,第二个仅发送 64 个字符。 由于异步性质,第二个 BeginSend 不会在第一
所以我明白 Send 是同步的,而 BeginSend 是异步的。我听说套接字发送方法的数据传输速度比 BeginSend 快(注意:我不是在谈论 CPU 性能,而只是发送和接收数据包延迟)。谁能告诉
我正在编写一个套接字应用程序,它可以同时异步轮询多个服务器并向用户报告它们状态的任何变化。到目前为止,一切正常,除了一个我似乎无法弄清楚的小错误。 服务器每 10 秒创建一组套接字,然后调用异步连接。
我的 TCP ping/pong 工作正常,但在尝试添加第二种数据类型后,我遇到了接收程序从未触发 BeginReceive 回调的情况。 代码是相同的,除了第二个(有问题的)数据类型,序列化是提前完
当我向远程 机器发送大量数据时,发送回调几乎立即执行。 [05:10:35:981] ChildSocket.Send(): Sending 1048508 bytes. [05:10:35:988]
这是一个我不太明白的异步套接字场景...我有 2 个 Tcp 套接字,一个客户端套接字和一个服务器套接字。我的服务器套接字已绑定(bind)并正在监听端口。 我的客户端套接字连接到服务器套接字(使用
比如说,我有一个类,它包装了一个 Socket 并且(除其他外)执行异步数据发送。 我按以下方式执行发送(大大简化 - 无错误处理等): private Socket _socket; public
我使用以下代码异步发送数据,但我注意到在从 asyncRes 获取的 AsyncWaitHandle 中使用 WaitOne 根本不等待。我检查了 MSDN,它说我应该使用 ManualResetEv
.NET 中的 Socket 类公开了以下方法: Socket.BeginSend Method (IList>, SocketFlags, AsyncCallback, Object) 我有一个返回
这里的工作代码 static MessageSender TopicClient; public static void SendTopicMessage(BrokeredMessage messag
这里的工作代码 static MessageSender TopicClient; public static void SendTopicMessage(BrokeredMessage messag
例。 http://msdn.microsoft.com/en-us/library/bew39x2a%28v=vs.110%29.aspx我想知道像 BeginSend、BeginReceive 等
我是一名优秀的程序员,十分优秀!