C# 从socket服务器c读取分离块中的数据#

C# 从socket服务器c读取分离块中的数据#,c#,.net,sockets,bytebuffer,C#,.net,Sockets,Bytebuffer,我有以下代码: void Start(Socket ServerSocket) { var socketConnected = ServerSocket.Accept(); var state = new State() { socket = socketConnected, buffer = new byte[2048] };

我有以下代码:

        void Start(Socket ServerSocket)
    {

       var socketConnected = ServerSocket.Accept();
        var state = new State()
        {
            socket = socketConnected,
            buffer = new byte[2048]              
        };

        ServerSocket.BeginReceive(state.buffer, 0, state.bufferSize, SocketFlags.None, ReadCallBack, state);

    }

    void ReadCallBack(IAsyncResult result)
    {
        var state = (State)result.AsyncState;

       int readData = state.socket.EndReceive(result);

        if(readData > 0)
        {
            //Do Work
        }
        state.socket.BeginReceive(state.buffer, 0, state.bufferSize, SocketFlags.None, ReadCallBack, state);
    }
它从客户端接收数据,工作得非常好。 问题是当客户端发送两个数据异步请求时。这个 服务器在同一阵列中同时接收数据。
我想知道是否有其他方法可以分离数据。

您可能想
Flush()
发送方。是的,但我没有那种方法。
我想知道是否有任何方法可以做到这一点?
没有任何方法可以保证这一点。(甚至你没有一个方法lile
Flush
)你必须实现一个自定义协议。。。(在数据之前发送数据包长度或使用分隔符字符等)我只有“发送”,如果服务器延迟并且客户端发送两条消息,服务器将接收一条消息,所有字节都在同一个数组中根据前面的注释…您可能想
Flush()
发送者。是,但是我没有那种方法。
我想知道是否有任何方法可以做到这一点?
没有,没有一种方法可以保证这一点。(甚至你没有一个方法lile
Flush
)你必须实现一个自定义协议。。。(在数据之前发送数据包长度或使用分隔符字符等)我只有“发送”,如果服务器延迟并且客户端发送两条消息,服务器将接收一条消息,所有字节都在同一个数组中,与前面的注释一致。。。