2012-05-10 3 views
0

원격 컴퓨터에서 실행되는 응용 프로그램의 활동을 모니터링해야하므로 간단한 SendLn/RecieveLn 메서드를 사용하도록 선택했으나 매우 큰 로컬 네트워크에서 안정적인지는 확실하지 않습니다 (한 서버에서 아주 큰 양의 컴퓨터에서 가져온 간단한 텍스트).TcpServer.ReceiveLn 데이터를 잃을 가능성이 있습니까?

procedure Tform1.log(inp:string); 
begin 
    // 
    richEditText.Lines.Insert(0,inp); 
end; 

procedure TForm1.TcpServer1Accept(Sender: TObject; 
    ClientSocket: TCustomIpClient); 
    var buf:string; 
begin 
    // 
    log('accept:'+ClientSocket.RemoteHost); 
    log('accept:'+ClientSocket.Receiveln); 
end; 

답변

0

배달의 보장은 결코 보장되지 않습니다. 네트워크 문제가 있습니다. 클라이언트가 서버에 통지되었다는 것을 알 수있는 유일한 방법은 클라이언트가 서버로부터 응답을 받는지 여부입니다. 그러나 상태 업데이트의 경우 전체 상태가 업데이트에서 전송되는 한 이상한 메시지가 손실되면 다음 메시지가 결국 통과하기 때문에 시스템을 설계하여 실제 메시지가 손실되지 않도록 할 수 있습니다. 영구 네트워크 문제가 아니라면 "sneakernet"만 옵션입니다 .-)

+0

내 메시지가 잘못 이해되어서 TcpServer의 수락 방법과 내부의 ReceiveLn 메서드에 대해 묻는 중입니다. 쓰레드를 관리하는 방법을 잘 모르겠다. 5 대의 컴퓨터가 연결을 시도한 다음 Ttcpserver가 accept 메소드를 실행하면 어떤 효과가 나타 납니까? 같은 시간에 처형 될 것인가 아닌가? –

관련 문제