🧼C, C++/공지및 삽질

C언어 프로젝트 [2020] #3.5

Mawile 2020. 10. 7.
728x90

방금 파일 송수신 기능에 관한 버그를 고치고 왔습니다..

 

일단 수신(클라이언트-> 서버 파일 전송)은 같은 컴퓨터에서 했을 때랑 서로 다른 컴퓨터에서 했을 때랑 다 잘되었는데

 

이상하게 송신(서버 -> 클라이언트 파일 전송)은 같은 컴퓨터에서 했을 때는 잘되었는데

서로 다른 컴퓨터에서 하면 파일이 제대로 잘 안되더라고요

 

이유를 찾았습니다

 

자세히 보니까 클라이언트 측에서 받아와 진 파일의 이름이 이상했습니다

 

파일 이름하고 뒤에 이상한 숫자가 적혀있었어요

 

속으로 이 생각이 들더군요 아 저거 혹시 파일 사이즈인가?

 


알고보니

 

원래

 

서버측에서 데이터를 주고 클라이언트에서 받고 데이터주고

서버측에서 데이터받고 주고를 반복해야지 정상적으로 잘되는데

 

 

같은컴터에서할때는 거리가없다보니 소켓버퍼에 데이터가 찰걱정이없었지만

서로다른컴퓨터에서는 거리가 있다보니 send함수로 보내는 서버측 소켓버퍼의속도가 클라이언트측 recv함수속도를 뛰어넘더군요, 그러다보니 서버에서 파일경로랑 파일사이즈를 보내고보내고

클라이언트에서는 한번받고 그다음 서버에서 데이터를 보내고 받더군요

 

 

그래서 사이에 클라이언트가 파일제목을 받을시 send를하게하고

또 서버에서 중간에 send 하고 바로 send하지말고 중간에 recv로해서 멈추는 구간을 만들어줬더니

정상적으로 작동했습니다

728x90

'🧼C, C++ > 공지및 삽질' 카테고리의 다른 글

codeSock <2.0> 개발일지 C++  (0) 2020.11.11
C언어 프로젝트 [ 2020 ] #4  (0) 2020.10.16
C언어 프로젝트 [ 2020 ] #3  (0) 2020.10.07
C언어 프로젝트 [ 2020 ] #2  (0) 2020.10.04
C언어 프로젝트 [ 2020 ] #1  (0) 2020.09.27

댓글