2012-02-09 2 views
0

최근에 NetworkStreams에 들어가기 시작했는데 질문이있었습니다. 그들이에서 와서 나는 현재 스레드를 생성하고 들어오는 모든 메시지를 처리하고 여기에 각 클라이언트에 대해 여러 개의 NetworkStream이 있습니다.

이를 설명하는 코드입니다. 위의에서

client.Connect(serverEndPoint); 
clientStream = client.GetStream(); 
client.NoDelay = true; 

ctThread = new Thread(getMessage); 
ctThread.Start(); 

private void getMessage() 
{ 
    while (true) 
    { 
     Byte[] data = new Byte[800]; 
     String responseData = String.Empty; 
     Int32 bytes = clientStream.Read(data, 0, data.Length); 
     responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); 

     MessageReceived(this, new ClientMessageEventArgs(responseData)); 
    } 
} 

을, 나는 인상 처리되는 이벤트 "MessageReceived" 패킷 데이터에 따라. 이것은 훌륭하지만, 요청을 보낸 직후에 데이터를 검색해야하는 별도의 경우가 있습니다.

클라이언트 당 두 개의 스트림이 있으면 괜찮습니까? 동일한 포트에서이 작업을 수행 할 수 있습니까? 어떻게 처리해야합니까? 본질적으로, 나는 (차단 방법) 후 즉시 데이터를 보내고받을 수 있기를 원합니다.

답변

1

네트워크 스트림에서 독립적으로 읽고 쓰레드 방식으로 읽고 쓸 수 있습니다. 즉 한 스레드에서 읽고 다른 스레드에서 쓰는 것입니다.

는 개방이 송신 방법 SendPacket() (line 1304)에서 독립적으로 달성되는 방법 보시 networkComms.net 소스 네트워크 통신 라이브러리 및 수신 방법 IncomingPacketHandler() (line 802)에 체크 아웃하는 경우.

Mx

+0

나는 통신을 위해 라이브러리를 사용하지 않으려 고했지만 나는 이것을 사용해도 될 것 같아. 감사. – jgallant