안녕하세요...
음...혹시 이거 어케 하는지요...
sendtext로 서버에 있는 스트링형 클래스필드를 모두 보내고 싶은데요...
요 필드는 배열이거든요...그냥 sendtext해서 중간에 구분자를 넣어서
보내니까 변수의 범위를 벗어나는 바람에....쩝...
그래서 만약 요필드의 배열크기가 한 100개 정도 된다면...
요 100개를 하나씩 클라이언트로 보내면 클라이언트에선
하나씩 받는방법을 말씀드리는 겁니다...
머...보내는건 대충 요런식으로 했는데여...
이것도 맞나 모르겠습니다..
procedure TsrvFrm.GetUserList(var max: Integer; Socket: TCustomWinSocket);
var
i : Integer;
tmp : String;
begin
for i := 0 to max do begin //max는 배열의 크기
tmp := Personal.Userid[i]; //Personal 클래스의 Userid라는 필드
Socket.SendText('U'+tmp);
end;
end;
클라이언트에서 받는건 도무지.....쩝...
그럼 부탁드립니다....
> 안녕하세요...
> 음...혹시 이거 어케 하는지요...
> sendtext로 서버에 있는 스트링형 클래스필드를 모두 보내고 싶은데요...
> 요 필드는 배열이거든요...그냥 sendtext해서 중간에 구분자를 넣어서
> 보내니까 변수의 범위를 벗어나는 바람에....쩝...
> 그래서 만약 요필드의 배열크기가 한 100개 정도 된다면...
> 요 100개를 하나씩 클라이언트로 보내면 클라이언트에선
> 하나씩 받는방법을 말씀드리는 겁니다...
>
> 머...보내는건 대충 요런식으로 했는데여...
> 이것도 맞나 모르겠습니다..
>
> procedure TsrvFrm.GetUserList(var max: Integer; Socket: TCustomWinSocket);
> var
> i : Integer;
> tmp : String;
> begin
> for i := 0 to max do begin //max는 배열의 크기
> tmp := Personal.Userid[i]; //Personal 클래스의 Userid라는 필드
> Socket.SendText('U'+tmp);
> end;
> end;
>
> 클라이언트에서 받는건 도무지.....쩝...
> 그럼 부탁드립니다....
주흥님 보내기전에 먼저 보내어질 데이타들을
완성된 문자열로 구성한후 한번에 던지시는게 어떨까요?
사용자 정의 패킷을 먼저 구성하시구요,
중간 내용은 콤마로 끊든지 아니면 * 문자로 끊든지
그렇게 구성하셔서 만약 길이가 4000 바이트 이상이 되지 않는다면
그냥 한번에 날리셔도 날아갑니다.
받는 쪽에서는 받아서 구분자를 끊어서 다시 완성하시구요.
음.. 어차피 소켓전송은 연속된 한바이트씩을 날리는 것이기 때문에
먼저 사용자 정의 패킷을 구성하시고, 완성된
문자열을 날리는 것이 가장 좋은 방법인거 같습니다.
그럼.. 즐거운 프로그래밍 되시길~~~