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