W
weiky
Unregistered / Unconfirmed
GUEST, unregistred user!
我的服务端有20几个连接。假设发送的消息包为
type TMsg=record
iSize:interger; //这个包大小。
strBigString:array[0..300000]; //很大的一个字符串数组
end;
我在TServersocket的OnClientRead()函数里的程序为:
先Socket.ReceiveBuf(a,4)一个4字节的TMsg.iSize;
再用一个while循环将剩下的TMsg.strBigString用Socket.ReceiveBuf(a,TMsg.iSize-4)接收下来。
但这样,若有多个客户端同时发送这个包时,在循环里会收到不同客户端的数据。
如何,将一个客户端的一个包完整地接收下来呢?
我的TServersocket用的是stNonBlocking方式。
谢谢!!!
type TMsg=record
iSize:interger; //这个包大小。
strBigString:array[0..300000]; //很大的一个字符串数组
end;
我在TServersocket的OnClientRead()函数里的程序为:
先Socket.ReceiveBuf(a,4)一个4字节的TMsg.iSize;
再用一个while循环将剩下的TMsg.strBigString用Socket.ReceiveBuf(a,TMsg.iSize-4)接收下来。
但这样,若有多个客户端同时发送这个包时,在循环里会收到不同客户端的数据。
如何,将一个客户端的一个包完整地接收下来呢?
我的TServersocket用的是stNonBlocking方式。
谢谢!!!