//TServerSocket의 OnRead 이벤트
var Tmp : Array[0..10239] of char; //버퍼
nLength : Integer; //전송된 데이터 길이
begin
FillChar(Tmp,Sizeof(Tmp),#0);
Socket.RecieveBuf(Tmp,Sizeof(Tmp));
nLength := Socket.RecieveLength; //<---여기서 값을 못받아요..
{
이어져 들어온 패킷을 검사하는 Routine
}
end;
TServerSocket의 onRead이벤트에서 클라이언트로부터 보내진 데이터의 길이를
RecieveLength로 알아내려고 했으나 값이 들어오지 않는군요.
연결되서 들어오는 패킷을 끊어서 받으려고 하는데 전체길이를 모르니...
어떻게 해야할지 난감하네요..
이런경우 어떤식으로 처리를 해야하나요~?
그리고 만약에 dWinSock으로 대신할경우는 어떻게 처리해야 하는지
도움 부탁드립니다...
그래야 버퍼풀이 안 생기고 다른 데이타를 받을 수 있게죠?
지금 하신 방법이 아닌 다른 방법으로 구현하셔야 할 겁니다...
정확히 하시려는 일이 뭐죠?
Tjsl wrote:
> //TServerSocket의 OnRead 이벤트
> var Tmp : Array[0..10239] of char; //버퍼
> nLength : Integer; //전송된 데이터 길이
> begin
> FillChar(Tmp,Sizeof(Tmp),#0);
> Socket.RecieveBuf(Tmp,Sizeof(Tmp));
> nLength := Socket.RecieveLength; //<---여기서 값을 못받아요..
> {
> 이어져 들어온 패킷을 검사하는 Routine
> }
> end;
>
> TServerSocket의 onRead이벤트에서 클라이언트로부터 보내진 데이터의 길이를
> RecieveLength로 알아내려고 했으나 값이 들어오지 않는군요.
>
> 연결되서 들어오는 패킷을 끊어서 받으려고 하는데 전체길이를 모르니...
> 어떻게 해야할지 난감하네요..
>
> 이런경우 어떤식으로 처리를 해야하나요~?
>
> 그리고 만약에 dWinSock으로 대신할경우는 어떻게 처리해야 하는지
> 도움 부탁드립니다...