我在 .net 套接字上有异步服务器和异步客户端。客户端创建对象(例如类 UserInfo),序列化他,并写入 byte[]。客户端也有一些文件(例如 1.png)。客户端需要将序列化的 UserInfo 和 1.png 发送到服务器。
我用于文件,
Socket.BeginSendFile 方法(字符串、AsyncCallback、对象)
对于 byte[] 对象
client.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), client);
服务器必须一起接收这个日期,并了解什么是文件,什么是序列化对象(因为服务器只有一种接收数据的方法)。
listener.BeginAccept(
new AsyncCallback(AcceptCallback),
listener);
...
AcceptCallback(IAsyncResult ar)
{...
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReadCallback), state);
}
和我们的逻辑
ReadCallback(IAsyncResult ar)
{...}
如何正确接收这些数据?最后,我需要该服务器具有 1.png 和 UserInfo 对象。(并区分它们)。而且,由于服务器是异步的,所以在同时接收来自多个客户端的数据时不应该混淆
我有一个想法,但我认为这是错误的:尝试在客户端上使用
Socket.BeginSendFile 方法(String、Byte[]、Byte[]、TransmitFileOptions、AsyncCallback、Object)
使用 byte[] preBuffer,我将在其中写入标头,例如“...”,在服务器上我尝试找到此标头,剪切它,分析并做一些活动。
有没有更简单更正确的方法?
谢谢。