Tag: 套接字开始

C#Socket.BeginReceive / EndReceive

以什么顺序调用Socket.BeginReceive / EndReceive函数? 例如,我调用BeginReceive两次,一次获取消息长度,第二次调用消息本身。 现在的情况是这样的,对于我发送的每条消息,我开始等待它的完成(实际上确认发送的消息,我等待动作在收到确认后完成),所以我用每个BeginSend调用BeginReceive ,但是每个BeginReceive的回调,我检查我是否收到长度或消息。 如果我收到消息并完全收到消息,那么我会调用另一个BeginReceive来接收完成的操作。 现在这是事情不同步的地方。 因为我的一个接收回调是接收字节,它将其解释为消息的长度,实际上它是消息本身。 现在我该如何解决? 编辑:这是一个C#.NET问题:) 这是代码,基本上它太大了,对不起 public void Send(string message) { try { bytesSent = 0; writeDataBuffer = System.Text.Encoding.ASCII.GetBytes(message); writeDataBuffer = WrapMessage(writeDataBuffer); messageSendSize = writeDataBuffer.Length; clientSocket.BeginSend(writeDataBuffer, bytesSent, messageSendSize, SocketFlags.None, new AsyncCallback(SendComplete), clientSocket); } catch (SocketException socketException) { MessageBox.Show(socketException.Message); } } public void WaitForData() { try { if (!messageLengthReceived) { […]