나는 클라이언트 - 서버 통신을 코딩하고있다. 클라이언트가 서버에 무엇인가를 묻고 있고 서버가 매 순간마다 (50 문제 내에서) 응답하고있다.Networkstream 불규칙한 속도
나는 클라이언트와 서버를 연결하여 TcpClient를 사용하고 작성하고하여 TcpClient 스트림 (는 NetworkStream)에 읽어 BinaryWriter/리더을 사용하고 있습니다.
저는 약 2000ms마다 ~ 100ko의 데이터를 전송합니다 (실제로 시도합니다). 클라이언트와 서버가 rj45 와이어로 연결되고 클라이언트 방화벽이 비활성화됩니다.
내 문제는 BinaryWriter.Write (myString)은 최소 5ms에서 최대 2500ms까지 소요된다는 것입니다. 그래서 TcpClient Send/ReceiveBufferSize를 20MB (기본값은 8MB)로 늘리고 NoDelay = true로 설정했는데 이전보다 5 초 이상 빨랐지만 그다지 좋지 않았습니다.
글씨가 너무 불규칙해서 버퍼가 꽉 차서 BinaryWriter가 클라이언트 쪽에서 빈 문자열을 기다리고 있기 때문에 스트림에서 ReadString을 실행 한 다음 스트림에서 데이터를 처리하지만 문제는 여전히 거기에.
코드 :
서버 측 :
private void traitementEnvois()
{
while (true)
{
//some processing and wait for data to send
NetworkStream stream = Client.GetStream();
using (BinaryWriter writer = new BinaryWriter(stream, Encoding.UTF8, true))
{
while (!_envoisATraiter.IsEmpty) //ConcurrentQueue for data to send
{
String jsonAEnvoyer;
_envoisATraiter.TryDequeue(out jsonAEnvoyer);
if (jsonAEnvoyer != null)
{
Stopwatch chrono = new Stopwatch();
chrono.Start();
writer.Write(jsonAEnvoyer);
long elaspedMs = chrono.ElapsedMilliseconds;
chrono.Stop();
EcritureEvenement.loggerEvenement("written in " + elaspedMs, TypesEvenements.DEBUG, "EnvoiParClient.traitementEnvois"); //log the event
}
}
}
}
}
클라이언트 측 :
private void traitementStreamServeur(TcpClient server)
{
NetworkStream stream = server.GetStream();
BinaryReader reader = new BinaryReader(stream);
while (true)
{
if (stream.DataAvailable)
{
String messageJson = reader.ReadString(); //read data from the stream
new Thread(() => traiterMessageRecu(messageJson)).Start(); //process data
}
else
{
Thread.Sleep(10);
}
}
}
일반적인 로그 :
DEBUG 04-23-2014 14:18:50.332 written in 9 ms DEBUG 04-23-2014 14:18:50.485 written in 8 ms DEBUG 04-23-2014 14:18:50.658 written in 9 ms DEBUG 04-23-2014 14:18:50.816 written in 6 ms DEBUG 04-23-2014 14:18:51.009 written in 4 ms DEBUG 04-23-2014 14:18:51.153 written in 24 ms DEBUG 04-23-2014 14:18:51.305 written in 4 ms DEBUG 04-23-2014 14:18:51.456 written in 9 ms DEBUG 04-23-2014 14:18:51.638 written in 14 ms DEBUG 04-23-2014 14:18:51.797 written in 62 ms DEBUG 04-23-2014 14:18:51.955 written in 63 ms DEBUG 04-23-2014 14:18:52.066 written in 13 ms DEBUG 04-23-2014 14:18:52.309 written in 77 ms DEBUG 04-23-2014 14:18:52.508 written in 58 ms DEBUG 04-23-2014 14:18:52.643 written in 81 ms DEBUG 04-23-2014 14:18:52.750 written in 18 ms DEBUG 04-23-2014 14:18:53.007 written in 108 ms DEBUG 04-23-2014 14:18:53.201 written in 124 ms DEBUG 04-23-2014 14:18:53.300 written in 27 ms DEBUG 04-23-2014 14:18:53.477 written in 49 ms DEBUG 04-23-2014 14:18:53.615 written in 56 ms DEBUG 04-23-2014 14:18:53.871 written in 129 ms DEBUG 04-23-2014 14:18:53.922 written in 36 ms DEBUG 04-23-2014 14:18:54.196 written in 121 ms DEBUG 04-23-2014 14:18:54.361 written in 101 ms DEBUG 04-23-2014 14:18:54.580 written in 148 ms DEBUG 04-23-2014 14:18:54.773 written in 154 ms DEBUG 04-23-2014 14:18:54.784 written in 11 ms DEBUG 04-23-2014 14:18:55.077 written in 103 ms DEBUG 04-23-2014 14:18:55.327 written in 192 ms DEBUG 04-23-2014 14:18:55.475 written in 147 ms DEBUG 04-23-2014 14:18:55.501 written in 25 ms DEBUG 04-23-2014 14:18:55.703 written in 92 ms DEBUG 04-23-2014 14:18:56.326 written in 578 ms DEBUG 04-23-2014 14:18:56.953 written in 626 ms DEBUG 04-23-2014 14:18:57.400 written in 447 ms DEBUG 04-23-2014 14:18:58.049 written in 648 ms DEBUG 04-23-2014 14:18:58.238 written in 189 ms DEBUG 04-23-2014 14:18:58.952 written in 713 ms DEBUG 04-23-2014 14:18:59.646 written in 694 ms DEBUG 04-23-2014 14:18:59.995 written in 348 ms DEBUG 04-23-2014 14:19:00.518 written in 523 ms DEBUG 04-23-2014 14:19:01.350 written in 831 ms DEBUG 04-23-2014 14:19:01.620 written in 270 ms DEBUG 04-23-2014 14:19:02.220 written in 599 ms DEBUG 04-23-2014 14:19:02.516 written in 295 ms DEBUG 04-23-2014 14:19:02.689 written in 172 ms DEBUG 04-23-2014 14:19:02.880 written in 191 ms DEBUG 04-23-2014 14:19:04.308 written in 1427 ms DEBUG 04-23-2014 14:19:04.331 written in 23 ms DEBUG 04-23-2014 14:19:04.345 written in 13 ms DEBUG 04-23-2014 14:19:04.351 written in 6 ms DEBUG 04-23-2014 14:19:04.370 written in 18 ms DEBUG 04-23-2014 14:19:04.477 written in 107 ms DEBUG 04-23-2014 14:19:05.553 written in 1075 ms DEBUG 04-23-2014 14:19:06.903 written in 1350 ms DEBUG 04-23-2014 14:19:07.168 written in 264 ms DEBUG 04-23-2014 14:19:07.565 written in 396 ms DEBUG 04-23-2014 14:19:09.073 written in 1507 ms DEBUG 04-23-2014 14:19:09.934 written in 861 ms DEBUG 04-23-2014 14:19:10.676 written in 742 ms DEBUG 04-23-2014 14:19:11.794 written in 1118 ms DEBUG 04-23-2014 14:19:12.247 written in 452 ms DEBUG 04-23-2014 14:19:13.171 written in 924 ms DEBUG 04-23-2014 14:19:13.514 written in 342 ms DEBUG 04-23-2014 14:19:13.779 written in 265 ms DEBUG 04-23-2014 14:19:14.762 written in 983 ms DEBUG 04-23-2014 14:19:14.799 written in 36 ms DEBUG 04-23-2014 14:19:16.525 written in 1726 ms DEBUG 04-23-2014 14:19:17.029 written in 503 ms DEBUG 04-23-2014 14:19:17.545 written in 515 ms DEBUG 04-23-2014 14:19:17.624 written in 79 ms DEBUG 04-23-2014 14:19:17.959 written in 335 ms DEBUG 04-23-2014 14:19:18.864 written in 904 ms DEBUG 04-23-2014 14:19:20.285 written in 1420 ms DEBUG 04-23-2014 14:19:20.307 written in 21 ms DEBUG 04-23-2014 14:19:20.359 written in 52 ms DEBUG 04-23-2014 14:19:20.722 written in 363 ms DEBUG 04-23-2014 14:19:21.172 written in 449 ms DEBUG 04-23-2014 14:19:21.824 written in 652 ms DEBUG 04-23-2014 14:19:22.000 written in 176 ms DEBUG 04-23-2014 14:19:22.499 written in 498 ms DEBUG 04-23-2014 14:19:23.368 written in 869 ms DEBUG 04-23-2014 14:19:23.773 written in 404 ms DEBUG 04-23-2014 14:19:24.835 written in 1062 ms DEBUG 04-23-2014 14:19:24.927 written in 91 ms DEBUG 04-23-2014 14:19:24.995 written in 68 ms DEBUG 04-23-2014 14:19:25.514 written in 518 ms DEBUG 04-23-2014 14:19:27.232 written in 1718 ms
아마 스톱워치에 스트림 플러시 시간과 커널 시간 실행이 포함되어있을 수 있습니다 ... – user35443