|
하안인 님이 쓰신 글 :
: : 그리고 OnRead 말고 Reading 쓰레드를 따로 생성하는 것이 좋을 듯 합니다.
:
: 위말씀이 어떤것인지요....
:
: 결국은 소켓통신에서 데이타를 보내는 경우 이벤트 단하고는
: 상관없이 데이타는 잘 전송된다는 애기인가요..
Reading Thread 에서
while()
{
TCP->Read(); // Blocking...
if( data )
add to job or other processing
ex) TCP->Send();
}
이런식으로 가능하다는 이야기죠.
또 메인 쓰레드에서 TCP->Send() 를 해도 상관이 없다는 이야기 입니다.
:
:
: 황경록 님이 쓰신 글 :
: : 하안인 님이 쓰신 글 :
: : : tcp/ip로 데이타를 전송하는 경우에
: : : 데이타를 받은후 그 데이타를 가지고 퀴리를 해야 할경우 그 퀴리하는 시간이
: : : 5초정도 걸린다고 가정하면 그 안에 다시 데이타가 전송되어 왔을때
: : : 그 데이타를 받아들일수 있나요..
: : :
: : :
: : : void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
: : : TCustomWinSocket *Socket)
: : : {
: : : .....
: : : 이부분에서 데이타를 퀴리해서 다시 재전송해야 할경우
: : : ...
: : : }
: : :
: : : 위 작업이 끝나기 전에 소켓은 데이타를 받은 경우 그 데이타값을 큐같은 곳에 저장해서
: : : 끝난 다음에 실행되는지....
: :
: : 기본적으로 Windows Socket 의 TCP IP Stack 의 Receive Buffer 에 데이터가 저장되고 데이터가 도착하면
: : Event 가 발생되어 그 데이터를 사용자에게 읽으라고 알려줍니다.
: :
: : Receive Buffer 는 Ring Buffer 로 구현되어 있을 것 같고, Read 함수에서 읽어간 만큼의 포인터가
: : 옮겨 질 듯 합니다.
: :
: : 암튼 -_- 그냥 제가 볼땐 읽은 데이터는 따로 저장하고 이를 처리하는 쓰레드를 생성하는게 바람직하다고
: : 보입니다만...
: :
: : 그리고 OnRead 말고 Reading 쓰레드를 따로 생성하는 것이 좋을 듯 합니다.
: :
: : :
: : : 백업쓰레드로 돌려야 하는것인지...
: : :
: : : 도움을 구합니다.
|