tcpClient를 사용하여 네트워크 통신을위한 몇 가지 클래스를 구축 중입니다. tcpserver 클래스는 연결을 수락하고 백그라운드 스레드로 셔플 링하여 해당 포트에서 연결을 계속 수락 할 수 있습니다. 여러 대의 클라이언트로 서버에 연결하고 서버에서 클라이언트로 파일을 전송할 수 있습니다. 내 dev 컴퓨터에서 서버와 클라이언트를 모두 실행하면 좋은 파일 전송 속도를 얻게됩니다 (160 mbps 정도 - 큰 패킷 크기를 사용하고 있습니다).tcpClient를 사용한 파일 전송의 속도가 느려짐
대용량 파일 (> 3gig)을 보내려고 할 때 전송 속도가 느려지고 변동이 심하기 때문에 여러 클라이언트의 크고 큰 파일 전송을 테스트하고 이상한 점을 발견했습니다. 만약 3 기가 테스트 파일 (.iso)을 보내려고한다면, 또한 내 dev 컴퓨터에서 실행되는 2 ~ 3 개의 다른 클라이언트를 사용하여 큰 파일 (> 500meg)을 전송하는 동안 .iso의 전송이 느려지거나 느려질 수 있습니다. 다른 클라이언트가 파일 수신을 완료 한 후에도 초당 1MB 이하로 느립니다. 아무런 이유없이 다시 속도로 픽업을 볼 수 있으며 초당 30에서 80 메가 사이에서 변동 할 수 있습니다.
오류는 없으며 코드를 살펴본 결과, 속도 저하가 어디에서 발생하는지 알 수 없습니다.
스레드 우선 순위 일 수 있습니까? 나는 큰 변수 타입을 사용하여 파일 전송의 일부 요소 (파일 크기에 대한 int64, 지금까지 들어온 바이트 양을 기록하는 또 다른 바이트)를 처리해야한다. 이러한 변수의 값이 커지면 감속
도움을 주시면 감사하겠습니다.
Ok ... 실제로 클라이언트에 도달 할 때 파일 바이트를 쓰지 않으면 이러한 문제가 전혀 발생하지 않습니다. 실제로 클라이언트의 파일에 바이트를 쓰려고 할 때 어떤 일이 발생합니다. 나는 단지 바이트 배열을 쓰기 위해 FileStream을 사용하고 있습니다 ... – Pete