Q&A

  • 소켓통신에 대해서 다시 올립니다...(최용일님 봐주세여)
하고다 하는 작업은 서버에 접속된 모든 클라이언트로 데이타를 전송하려고 합니다.

서버쪽은 Idle Event에서 다음과 같이 작성했습니다.

var

A : Array[0..10] of Byte;

nI : Integer;

begin

FillChar(A, SizeOf(A), $00);

for nI := 0 to 10 do

A[nI] := nI;



for nI := 0 to ssktClient.Socket.ActiveConnections-1

ssktClient.Socket.Connections[0].SendBuf(A, Length(A));

end;



클라이언트쪽은 다음과 같습니다.

procedure TfrmClientMain.ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket);

var

nI, nTmp : Integer;

anRxData : Array of Byte;

begin

nTmp := Socket.ReceiveLength;

SetLength(anRxData, nTmp);

Socket.ReceiveBuf(anRxData, nTmp);

end;



서버쪽에서 보낸 데이타(배열)를 클라이언트쪽에서 배열로 그대로 담으려고 하는데...

그게 잘 안되네여...

어찌하면 되는지 설명 좀 부탁합니다.



1  COMMENTS
  • Profile
    최용일 2001.05.11 04:37
    아래와 같이 해보세요.



    Socket.ReceiveBuf(anRxData[0], nTmp);



    아래 for문도 약간 잘못된거 같은데...



    for nI := 0 to ssktClient.Socket.ActiveConnections-1

    ssktClient.Socket.Connections[nl].SendBuf(A, Length(A)); // 0 => nl

    end;



    과객 wrote:

    > 하고다 하는 작업은 서버에 접속된 모든 클라이언트로 데이타를 전송하려고 합니다.

    > 서버쪽은 Idle Event에서 다음과 같이 작성했습니다.

    > var

    > A : Array[0..10] of Byte;

    > nI : Integer;

    > begin

    > FillChar(A, SizeOf(A), $00);

    > for nI := 0 to 10 do

    > A[nI] := nI;

    >

    > for nI := 0 to ssktClient.Socket.ActiveConnections-1

    > ssktClient.Socket.Connections[0].SendBuf(A, Length(A));

    > end;

    >

    > 클라이언트쪽은 다음과 같습니다.

    > procedure TfrmClientMain.ClientSocket1Read(Sender: TObject;

    > Socket: TCustomWinSocket);

    > var

    > nI, nTmp : Integer;

    > anRxData : Array of Byte;

    > begin

    > nTmp := Socket.ReceiveLength;

    > SetLength(anRxData, nTmp);

    > Socket.ReceiveBuf(anRxData, nTmp);

    > end;

    >

    > 서버쪽에서 보낸 데이타(배열)를 클라이언트쪽에서 배열로 그대로 담으려고 하는데...

    > 그게 잘 안되네여...

    > 어찌하면 되는지 설명 좀 부탁합니다.

    >