【发布时间】:2019-05-07 06:48:53
【问题描述】:
我正在设置一些套接字,遇到了一些奇怪的行为,想知道这是否是预期的。
我在套接字的每一侧都有两个线程。编写器(每侧一个)只是从队列中获取消息,将它们序列化,然后写入字节。读取器(每侧一个)读取我的自定义协议的标头和正文,反序列化消息并触发事件。
够简单吧?
我感兴趣的奇怪行为发生在客户端连接到服务器然后立即写入消息时。客户端可能非常快,以至于在客户端发送消息时服务器还没有启动它的读取线程。如果发生这种情况,那么服务器永远不会收到消息。读取线程实际调用 Read() 后发送的消息被成功接收和处理。
这是预期的行为吗?是否预期在读取另一端的任何内容之前写入套接字的字节将被 Read() 忽略?
【问题讨论】: