procedure TMainFrm.SendUserList;
// 유저리스트를 보내준다
var
szBuf : array of Char;
nSize : integer;
begin
SetLength(szBuf, MAX_SIZE);
CopyMemory(pChar(szBuf), pChar('BIN'), 4);
nSize := lvUserList.WriteToBuffer(pChar(@szBuf[4]), MAX_SIZE);
with ServerSock.Socket do
Connections[ActiveConnections-1].SendBuf(pChar(szBuf)^, nSize + 4);
end
procedure TMainFrm.ClientSockRead(Sender: TObject; Socket: TCustomWinSocket);
var
nReceiveLen : integer;
szBuf : array of char;
begin
SetLength(szBuf, MAX_SIZE);
nReceiveLen := Socket.ReceiveBuf(pChar(szBuf)^, MAX_SIZE);
SetLength(szBuf, nReceiveLen);
if pChar(szBuf) = 'BIIN' then
lvUserList.ReadFromBuffer(pChar(@szBuf[4]), nReceiveLen - 4);
end;
이상은 타락님께서 올리신 예입니다...
궁금한 것이 머냐면은요 저기 중간 중간 4의 역할이요...
이걸 활용해서 파일을 Buf로 보낼려구요...
붙는 문자열('BIN')의 길이가 4바이트(널문자포함해서)이기 때문에 계속 붙이는거 같군요..