задержка получения данных от соединения gprs - PullRequest
2 голосов
/ 17 июня 2011

Я пишу парсер на C #. Он получает и отправляет пакет с max length = 100. Однако время между (получением и отправкой) после каждого пакета составляет более 2 секунд. Я не знаю, является ли это проблемой моей реализации или стороны gprs.

Прослушивание сервера:

tcpListener = new TcpListener(IPAddress.Any, Names.comPort);
tcpListener.Server.NoDelay = true;

while (true)
{
    TcpClient client = tcpListener.AcceptTcpClient();

    Thread th = new Thread(new ParameterizedThreadStart(HandleComm));
    th.IsBackground = true;
    th.start(client);
}

Начало приема данных:

HandleComm(object client)
{
 NetworkStream clientStream = ((TcpClient)client).GetStream();

 while (true)
 {
     try { bytesRead = clientStream.Read(buffer, 0, 200);}
     catch(Exception ex) {break;}        
 }
}

Это простая реализация, момент получения bytesRead первого пакета данных по сравнению со вторым составляет около 2 с. Это слишком медленно, я думаю. Как я могу увеличить время получения? Я уже проверил после получения данных и ответа, это заняло всего 1 мс.

Добавление отправляющей части:

socket.NoDelay = true;
socket.SendTimeout = 200; // minimum time out
socket.SendBufferSize = bytes.Length;

socket.Send(bytes, SocketFlags.DontRoute);
...