|
지금까지는 계속 검색해가면서 해결을 해왔는데,
몇시간을 붙잡아도 이게 해결이 안되네요. 내일 아침까지는 마감을 해줘야 될꺼 같은데;;;
구현 내용은 간단합니다.
TImage *ScreenImage;
ScreenImage->Canvas->Handle 의 데이터를 네트웍으로 보낸 후
상대방에서 받은 다음에
다시
ScreenImage->Canvas->Handle 으로 넣는 겁니다.
정말 간단한거 같은데 잘 안되네요. 다음은 제가 시도해본 것들입니다.
1. Buffer를 그대로 사용하기
보낼때는 먼저 데이터 헤더를 보냅니다.
Client->Socket->SendBuf( &dh, sizeof(DataHeader) );
그다음에 데이터가 들어가는데,
ClientSocket->Socket->SendBuf( bm->Canvas->Handle, 400*300*3 ); // 400x300 의 크기의 이미지입니다.
이렇게 하면 bm->Canvas->Handle 에 대해서 Access Violation 이 일어납니다.
2. MemoryStream 사용하기
TMemoryStream *stream = new TMemoryStream;
bm->SaveToStream( stream );
ClientSocket->Socket->SendStream( stream );
을 사용해봤는데, 일단 이렇게 몇번 보내다보면 에러가 나고,
반대편에서는 ReceiveStream 도 없이 RecieveBuf로 받아야 되더군요. 애매하네요.
이걸 도대체 어떻게 해야하나요?
답변 부탁드립니다.
ps.
대충 보니까, 억지로 다른 데이터라도 보낼려고 하면, 전송량이 많을 경우 꼭 10053인가 그 에러를 내더군요.
전송량을 줄여서 끊어야 되나요?;;;;;
|