나의 현재 ClientHandler
방법은 NetStream
에이 클라이언트 말했다 열어하는 TcpClient
을 수신하고 이런 식으로 데이터를 당겨 시작합니다TcpClient/TcpListener를 사용하면 알 수없는 양의 개별 메시지를받는 가장 좋은 방법은 무엇입니까?
try
{
//byte[] bytes = new byte[client.ReceiveBufferSize];
byte[] bytes = new byte[100];
int bytes_read = netstream.Read(bytes, 0, bytes.Length);
Console.WriteLine(DateTime.Now.ToString() + ": Bytes Read");
while (bytes_read > 0)
{
memstream.Write(bytes, 0, bytes_read);
bytes_read = netstream.Read(bytes, 0, bytes.Length);
if (memstream.Length > 255)
{
MemStreamRead(memstream);
memstream.Flush();
OkResponse(netstream);
}
}
}
catch (Exception e)
{
Console.WriteLine("No longer connected");
connected = false;
Console.WriteLine(e);
Console.WriteLine(e.StackTrace);
}
이미 클라이언트에서 첫 번째 메시지를 얻을 수 있습니다,하지만 난 힘든 시간을 어떻게 새 메시지에 대한 스트림을 열어두고, 내 현재 메시지가 완료되었는지 결정할 생각.
netstream.DataAvailable
이 작동하는 것 같습니다. netstream
이 더 이상 데이터를 가져 오지 않을 때이를 감지하고 false를 반환한다고 가정합니다. 그러나 새로운 데이터를 사용할 수있게되면 어떻게 다시 듣기 시작합니까?
미리 도움을 청하십시오!
비동기 작업을 streamreader와 함께 사용하여 tcpclient의 기본 스트림 객체를 계속 읽을 수 있습니다. –